Move to new nom + tokio-proto
This commit is contained in:
parent
e68d61a1e2
commit
5c91f4c1bb
3 changed files with 15 additions and 17 deletions
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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<T: Read + Write> Connection<T> {
|
|||
let line = &data[line_start..];
|
||||
|
||||
match parse_response(line) {
|
||||
IResult::Done(
|
||||
Ok((
|
||||
_,
|
||||
Response::Done {
|
||||
tag,
|
||||
|
|
@ -751,7 +750,7 @@ impl<T: Read + Write> Connection<T> {
|
|||
information,
|
||||
..
|
||||
},
|
||||
) => {
|
||||
)) => {
|
||||
assert_eq!(tag.as_bytes(), match_tag.as_bytes());
|
||||
Some(match status {
|
||||
Status::Bad | Status::No => {
|
||||
|
|
@ -761,8 +760,8 @@ impl<T: Read + Write> Connection<T> {
|
|||
status => Err((status, None)),
|
||||
})
|
||||
}
|
||||
IResult::Done(..) => None,
|
||||
IResult::Incomplete(..) => {
|
||||
Ok((..)) => None,
|
||||
Err(nom::Err::Incomplete(..)) => {
|
||||
continue_from = Some(line_start);
|
||||
None
|
||||
}
|
||||
|
|
|
|||
17
src/parse.rs
17
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<u8>) -> ZeroCopyResult<Capabilities> {
|
|||
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<u8>) -> ZeroCopyResult<Capabilities> {
|
|||
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<Mailbox> {
|
|||
|
||||
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<Mailbox> {
|
|||
_ => {}
|
||||
}
|
||||
}
|
||||
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<Mailbox> {
|
|||
MailboxDatum::SubList { .. } | MailboxDatum::List { .. } => {}
|
||||
}
|
||||
}
|
||||
IResult::Done(_, resp) => {
|
||||
Ok((_, resp)) => {
|
||||
break Err(resp.into());
|
||||
}
|
||||
_ => {
|
||||
|
|
@ -225,7 +224,7 @@ pub fn parse_ids(lines: Vec<u8>) -> Result<HashSet<u32>> {
|
|||
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<u8>) -> Result<HashSet<u32>> {
|
|||
break Ok(ids);
|
||||
}
|
||||
}
|
||||
IResult::Done(_, resp) => {
|
||||
Ok((_, resp)) => {
|
||||
break Err(resp.into());
|
||||
}
|
||||
_ => {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue