]> Sergey Matveev's repositories - public-inbox.git/commitdiff
lei_to_mail: cast to URIimap object early
authorEric Wong <e@80x24.org>
Fri, 16 Apr 2021 23:10:30 +0000 (16:10 -0700)
committerEric Wong <e@80x24.org>
Sat, 17 Apr 2021 02:24:47 +0000 (22:24 -0400)
NetReader->add_url supports URI-like objects, now.  We'll be
relying on the canonicalization for LeiSavedSearch.

lib/PublicInbox/LeiToMail.pm

index 4ebaf8f347371d661e4473329ab3ef4dc23dd8e3..daa8084b13faa3c54aa66b4922a4cbfa922a82b3 100644 (file)
@@ -335,14 +335,16 @@ sub new {
                $self->{base_type} = 'mbox';
        } elsif ($fmt =~ /\Aimaps?\z/) { # TODO .onion support
                require PublicInbox::NetWriter;
+               require PublicInbox::URIimap;
                my $net = PublicInbox::NetWriter->new;
-               $net->add_url($dst);
                $net->{quiet} = $lei->{opt}->{quiet};
-               my $err = $net->errors($dst);
+               my $uri = PublicInbox::URIimap->new($dst)->canonical;
+               $net->add_url($uri);
+               my $err = $net->errors;
                return $lei->fail($err) if $err;
-               require PublicInbox::URIimap; # TODO: URI cast early
-               $self->{uri} = PublicInbox::URIimap->new($dst);
-               $self->{uri}->mailbox or die "No mailbox: $dst";
+               $uri->mailbox or return $lei->fail("No mailbox: $dst");
+               $self->{uri} = $uri;
+               $dst = $lei->{ovv}->{dst} = $$uri; # canonicalized
                $lei->{net} = $net;
                $self->{base_type} = 'imap';
        } else {