From 604fa817dcd5d430931e6cfb921bd62f4cddc345 Mon Sep 17 00:00:00 2001
From: Eric Wong <e@80x24.org>
Date: Fri, 16 Apr 2021 16:10:30 -0700
Subject: [PATCH] lei_to_mail: cast to URIimap object early

NetReader->add_url supports URI-like objects, now.  We'll be
relying on the canonicalization for LeiSavedSearch.
---
 lib/PublicInbox/LeiToMail.pm | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/lib/PublicInbox/LeiToMail.pm b/lib/PublicInbox/LeiToMail.pm
index 4ebaf8f3..daa8084b 100644
--- a/lib/PublicInbox/LeiToMail.pm
+++ b/lib/PublicInbox/LeiToMail.pm
@@ -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 {
-- 
2.51.0