From 5b8239e45e01fc8917d7f058434d49a33f92cb5e Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Wed, 21 Sep 2016 18:14:20 +0200 Subject: [PATCH] Impl Mail::import_from_path() --- libimagmail/src/mail.rs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/libimagmail/src/mail.rs b/libimagmail/src/mail.rs index 897fc37e..cae45db1 100644 --- a/libimagmail/src/mail.rs +++ b/libimagmail/src/mail.rs @@ -1,11 +1,16 @@ 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); @@ -21,16 +26,19 @@ impl From for Buffer { } } -pub struct Mail<'a> { - fle: FileLockEntry<'a>, - buffer: Buffer, -} +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 { - unimplemented!() + 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)) } /// Imports a mail from the String passed