use std::result::Result as RResult; use std::path::Path; use std::path::PathBuf; use libimagstore::store::{FileLockEntry, Store}; use libimagref::reference::Ref; use libimagref::flags::RefFlags; use mailparse::{MailParseError, ParsedMail, parse_mail}; use hasher::MailHasher; use result::Result; use error::{MapErrInto, MailErrorKind as MEK}; struct Buffer(String); impl Buffer { pub fn parsed<'a>(&'a self) -> RResult, MailParseError> { parse_mail(self.0.as_bytes()) } } impl From for Buffer { fn from(data: String) -> Buffer { Buffer(data) } } pub struct Mail<'a>(Ref<'a>); impl<'a> Mail<'a> { /// Imports a mail from the Path passed pub fn import_from_path>(store: &Store, p: P) -> Result { let h = MailHasher::new(); let f = RefFlags::default().with_content_hashing(true).with_permission_tracking(false); let p = PathBuf::from(p.as_ref()); Ref::create_with_hasher(store, p, f, h) .map_err_into(MEK::RefCreationError) .map(|r| Mail(r)) } /// Opens a mail by the passed hash pub fn open>(store: &Store, hash: S) -> Result> { unimplemented!() } pub fn get_field>(&self, field: S) -> Result> { unimplemented!() } pub fn get_from(&self) -> Result> { unimplemented!() } pub fn get_to(&self) -> Result> { unimplemented!() } pub fn get_subject(&self) -> Result> { unimplemented!() } pub fn get_message_id(&self) -> Result> { unimplemented!() } pub fn get_in_reply_to(&self) -> Result> { unimplemented!() } }