From bce97d71bb62c18f972720264a1840bafc62687d Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Wed, 11 Dec 2019 00:07:47 +0200 Subject: [PATCH] testing/imap_conn: update imapconn shell use --- melib/src/backends.rs | 4 ++++ melib/src/backends/imap.rs | 12 ++++++++---- testing/src/imap_conn.rs | 8 ++++++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/melib/src/backends.rs b/melib/src/backends.rs index c571fbca..5f3149f4 100644 --- a/melib/src/backends.rs +++ b/melib/src/backends.rs @@ -250,6 +250,10 @@ pub trait MailBackend: ::std::fmt::Debug + Send + Sync { None } fn as_any(&self) -> &dyn Any; + + fn as_any_mut(&mut self) -> &mut dyn Any { + unimplemented!() + } } /// A `BackendOp` manages common operations for the various mail backends. They only live for the diff --git a/melib/src/backends/imap.rs b/melib/src/backends/imap.rs index 269c9e59..84eb38fd 100644 --- a/melib/src/backends/imap.rs +++ b/melib/src/backends/imap.rs @@ -471,6 +471,10 @@ impl MailBackend for ImapType { self } + fn as_any_mut(&mut self) -> &mut dyn::std::any::Any { + self + } + fn tags(&self) -> Option>>> { if *self.can_create_flags.lock().unwrap() { Some(self.tag_index.clone()) @@ -530,8 +534,8 @@ impl ImapType { pub fn shell(&mut self) { let mut conn = ImapConnection::new_connection(&self.server_conf); let mut res = String::with_capacity(8 * 1024); + conn.send_command(b"NOOP").unwrap(); conn.read_response(&mut res).unwrap(); - debug!("out: {}", &res); let mut input = String::new(); loop { @@ -540,6 +544,9 @@ impl ImapType { match io::stdin().read_line(&mut input) { Ok(_) => { + if input.trim().eq_ignore_ascii_case("logout") { + break; + } conn.send_command(input.as_bytes()).unwrap(); conn.read_lines(&mut res, String::new()).unwrap(); if input.trim() == "IDLE" { @@ -550,9 +557,6 @@ impl ImapType { conn = iter.into_conn(); } debug!("out: {}", &res); - if input.trim().eq_ignore_ascii_case("logout") { - break; - } } Err(error) => debug!("error: {}", error), } diff --git a/testing/src/imap_conn.rs b/testing/src/imap_conn.rs index 11652b6f..efc5ba41 100644 --- a/testing/src/imap_conn.rs +++ b/testing/src/imap_conn.rs @@ -33,7 +33,11 @@ fn main() -> Result<()> { .collect(), ..Default::default() }; - let mut imap = ImapType::new(&set, Box::new(|_| true)); - imap.shell(); + let mut imap = ImapType::new(&set, Box::new(|_| true))?; + + (imap.as_any_mut()) + .downcast_mut::() + .unwrap() + .shell(); Ok(()) }