Fleshed out some methods in the Filesystem mail store
This commit is contained in:
parent
0a30c49d49
commit
4f2f151173
2 changed files with 27 additions and 1 deletions
|
@ -38,7 +38,25 @@ impl MailStore for Filesystem {
|
|||
}
|
||||
|
||||
fn get_folder(&self, user: &str, folder: &str) -> Option<Folder> {
|
||||
todo!()
|
||||
let Some((user, host)) = user.rsplit_once('@') else {
|
||||
return None;
|
||||
};
|
||||
let mut path = self.path.clone();
|
||||
path.push(host);
|
||||
path.push(user);
|
||||
path.push(folder);
|
||||
let Ok(dir) = fs::read_dir(path) else {
|
||||
return None;
|
||||
};
|
||||
let mut folder = Folder { name: folder.to_string(), messages: HashMap::new() };
|
||||
dir.filter(|x| x.is_ok()).map(|x| x.unwrap()).for_each(|e| {
|
||||
if let Ok(contents) = fs::read_to_string(e.path()) {
|
||||
if let Ok(message) = contents.parse::<Message>() {
|
||||
folder.messages.insert(message.id.clone(), message);
|
||||
}
|
||||
}
|
||||
});
|
||||
Some(folder)
|
||||
}
|
||||
|
||||
fn get_message(&self, user: &str, folder: &str, title: &str) -> Option<Message> {
|
||||
|
|
|
@ -78,3 +78,11 @@ impl fmt::Display for Message {
|
|||
write!(f, "{}\r\n", self.body)
|
||||
}
|
||||
}
|
||||
|
||||
impl FromStr for Message {
|
||||
type Err = String;
|
||||
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue