X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FNetWriter.pm;h=e26e9815610a3680aab3e6dc05a1321f9f94c1e9;hb=9d1d7c2b505454fba331666a951e0f7997500b3c;hp=6f0a0b94e7527b81429e7bc4ff3723d6666b1d62;hpb=bf367c9ac999e2e64a53ead083f68b171d9f6d35;p=public-inbox.git diff --git a/lib/PublicInbox/NetWriter.pm b/lib/PublicInbox/NetWriter.pm index 6f0a0b94..e26e9815 100644 --- a/lib/PublicInbox/NetWriter.pm +++ b/lib/PublicInbox/NetWriter.pm @@ -16,11 +16,24 @@ my %IMAPkw2flags; sub imap_append { my ($mic, $folder, $bref, $smsg, $eml) = @_; $bref //= \($eml->as_string); - $smsg //= bless { }, 'PublicInbox::Smsg'; + $smsg //= bless {}, 'PublicInbox::Smsg'; + bless($smsg, 'PublicInbox::Smsg') if ref($smsg) eq 'HASH'; $smsg->{ts} //= msg_timestamp($eml // PublicInbox::Eml->new($$bref)); my @f = map { $IMAPkw2flags{$_} } @{$smsg->{kw}}; $mic->append_string($folder, $$bref, "@f", $smsg->internaldate) or die "APPEND $folder: $@"; } +sub imap_delete_all { + my ($self, $url) = @_; + my $uri = PublicInbox::URIimap->new($url); + my $sec = $self->can('uri_section')->($uri); + local $0 = $uri->mailbox." $sec"; + my $mic = $self->mic_get($uri) or die "E: not connected: $@"; + $mic->select($uri->mailbox) or return; # non-existent + if ($mic->delete_message('1:*')) { + $mic->expunge; + } +} + 1;