use imap_codec::{
decode::{Decoder, GreetingDecodeError},
GreetingCodec,
};
#[path = "common/common.rs"]
mod common;
use common::read_more;
use crate::common::Role;
const WELCOME: &str = r#"# Parsing of IMAP greetings
"S:" denotes the server.
Note: "\n" will be automatically replaced by "\r\n".
--------------------------------------------------------------------------------------------------
Enter IMAP greeting (or "exit").
"#;
fn main() {
println!("{}", WELCOME);
let mut buffer = Vec::new();
loop {
match GreetingCodec::default().decode(&buffer) {
Ok((remaining, greeting)) => {
println!("{:#?}", greeting);
buffer = remaining.to_vec();
}
Err(GreetingDecodeError::Incomplete) => {
read_more(&mut buffer, Role::Server);
}
Err(GreetingDecodeError::Failed) => {
println!("Error parsing greeting.");
println!("Clearing buffer.");
buffer.clear();
}
}
}
}