Prepare for newer rust imap

This commit is contained in:
Jon Gjengset 2018-09-18 11:14:59 -04:00
parent 2ad0ec13c4
commit b2a94bc62b
No known key found for this signature in database
GPG Key ID: D64AC9D67176DC71
3 changed files with 347 additions and 315 deletions

641
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -19,8 +19,8 @@ license = "MIT/Apache-2.0"
debug=true
[dependencies]
imap = "0.8.1"
native-tls = "0.1"
imap = { git = "https://github.com/mattnenterprise/rust-imap.git" }
native-tls = "0.2"
systray = "0.3.0"
mailparse = "0.6.0"
toml = "0.4.2"

View File

@ -7,7 +7,6 @@ extern crate systray;
extern crate toml;
extern crate xdg;
use imap::client::Client;
use native_tls::{TlsConnector, TlsStream};
use rayon::prelude::*;
@ -29,10 +28,13 @@ struct Account {
impl Account {
pub fn connect(&self) -> Result<Connection<TlsStream<TcpStream>>, imap::error::Error> {
let tls = TlsConnector::builder()?.build()?;
Client::secure_connect((&*self.server.0, self.server.1), &self.server.0, &tls).and_then(
|mut c| {
try!(c.login(self.username.trim(), self.password.trim()));
let tls = TlsConnector::builder().build()?;
imap::client::secure_connect((&*self.server.0, self.server.1), &self.server.0, &tls)
.and_then(|c| {
let mut c = try!(
c.login(self.username.trim(), self.password.trim())
.map_err(|(e, _)| e)
);
let cap = try!(c.capabilities());
if !cap.iter().any(|&c| c == "IDLE") {
return Err(imap::error::Error::BadResponse(
@ -44,14 +46,13 @@ impl Account {
account: self.clone(),
socket: c,
})
},
)
})
}
}
struct Connection<T: Read + Write> {
account: Account,
socket: Client<T>,
socket: imap::client::Session<T>,
}
impl<T: Read + Write + imap::client::SetReadTimeout> Connection<T> {