diff --git a/Cargo.toml b/Cargo.toml index d260ca9..33cae10 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,8 +28,8 @@ path = "src/lib.rs" native-tls = "0.2" regex = "1.0" bufstream = "0.1" -imap-proto = "0.4.1" -nom = "3.2.1" +imap-proto = "0.6" +nom = "4.0" [dev-dependencies] -base64 = "0.9.2" +base64 = "0.10" diff --git a/src/client.rs b/src/client.rs index 2aaf504..52895f4 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1,6 +1,5 @@ use bufstream::BufStream; use native_tls::{TlsConnector, TlsStream}; -use nom::IResult; use std::collections::HashSet; use std::io::{self, Read, Write}; use std::net::{TcpStream, ToSocketAddrs}; @@ -743,7 +742,7 @@ impl Connection { let line = &data[line_start..]; match parse_response(line) { - IResult::Done( + Ok(( _, Response::Done { tag, @@ -751,7 +750,7 @@ impl Connection { information, .. }, - ) => { + )) => { assert_eq!(tag.as_bytes(), match_tag.as_bytes()); Some(match status { Status::Bad | Status::No => { @@ -761,8 +760,8 @@ impl Connection { status => Err((status, None)), }) } - IResult::Done(..) => None, - IResult::Incomplete(..) => { + Ok((..)) => None, + Err(nom::Err::Incomplete(..)) => { continue_from = Some(line_start); None } diff --git a/src/parse.rs b/src/parse.rs index 72e6a60..8c1c0ba 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -1,5 +1,4 @@ use imap_proto::{self, MailboxDatum, Response}; -use nom::IResult; use regex::Regex; use std::collections::HashSet; @@ -36,7 +35,7 @@ where } match imap_proto::parse_response(lines) { - IResult::Done(rest, resp) => { + Ok((rest, resp)) => { lines = rest; match map(resp) { @@ -130,7 +129,7 @@ pub fn parse_capabilities(lines: Vec) -> ZeroCopyResult { let mut caps = HashSet::new(); loop { match imap_proto::parse_response(lines) { - IResult::Done(rest, Response::Capabilities(c)) => { + Ok((rest, Response::Capabilities(c))) => { lines = rest; caps.extend(c); @@ -138,7 +137,7 @@ pub fn parse_capabilities(lines: Vec) -> ZeroCopyResult { break Ok(Capabilities(caps)); } } - IResult::Done(_, resp) => { + Ok((_, resp)) => { break Err(resp.into()); } _ => { @@ -156,7 +155,7 @@ pub fn parse_mailbox(mut lines: &[u8]) -> Result { loop { match imap_proto::parse_response(lines) { - IResult::Done(rest, Response::Data { status, code, .. }) => { + Ok((rest, Response::Data { status, code, .. })) => { lines = rest; if let imap_proto::Status::Ok = status { @@ -184,7 +183,7 @@ pub fn parse_mailbox(mut lines: &[u8]) -> Result { _ => {} } } - IResult::Done(rest, Response::MailboxData(m)) => { + Ok((rest, Response::MailboxData(m))) => { lines = rest; use imap_proto::MailboxDatum; @@ -206,7 +205,7 @@ pub fn parse_mailbox(mut lines: &[u8]) -> Result { MailboxDatum::SubList { .. } | MailboxDatum::List { .. } => {} } } - IResult::Done(_, resp) => { + Ok((_, resp)) => { break Err(resp.into()); } _ => { @@ -225,7 +224,7 @@ pub fn parse_ids(lines: Vec) -> Result> { let mut ids = HashSet::new(); loop { match imap_proto::parse_response(lines) { - IResult::Done(rest, Response::IDs(c)) => { + Ok((rest, Response::IDs(c))) => { lines = rest; ids.extend(c); @@ -233,7 +232,7 @@ pub fn parse_ids(lines: Vec) -> Result> { break Ok(ids); } } - IResult::Done(_, resp) => { + Ok((_, resp)) => { break Err(resp.into()); } _ => {