From 9d41fcd463e3eff25e353ada4718317926125d68 Mon Sep 17 00:00:00 2001 From: Jacob Kiers Date: Tue, 2 Aug 2022 23:07:01 +0200 Subject: [PATCH] Change path to store messages in Signed-off-by: Jacob Kiers --- bin/src/main.rs | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/bin/src/main.rs b/bin/src/main.rs index 954da71..141f200 100644 --- a/bin/src/main.rs +++ b/bin/src/main.rs @@ -26,10 +26,7 @@ pub struct Message { impl Message { pub fn new(uid: String, data: Vec) -> Message { - Message { - uid, - data, - } + Message { uid, data } } pub(crate) fn get_parsed(&self) -> Option { @@ -61,12 +58,8 @@ fn main() { let processed_html = process_html(&html_body).expect("Could not process the HTML"); let html_bytes = processed_html.as_bytes(); - let hash = base16ct::lower::encode_string(&Sha256::digest(&html_bytes)); - println!("{}", hash); - - let html_path: PathBuf = [dir, Path::new(&format!("{}.html", &title))] - .iter() - .collect(); + let html_path: PathBuf = [dir, Path::new(&get_path(&parsed, &msg))].iter().collect(); + println!("Storing to {}", &html_path.display()); OpenOptions::new() .write(true) @@ -80,6 +73,25 @@ fn main() { } } +fn get_path(parsed: &MpMessage, msg: &Message) -> String { + let date = parsed.get_date().expect("Could not extract date"); + let date_str = format!( + "{:04}{:02}{:02}{:02}{:02}{:02}", + &date.year, &date.month, &date.day, &date.hour, &date.minute, &date.second + ); + + let hash = base16ct::lower::encode_string(&Sha256::digest( + &parsed.get_html_body(0).expect("Expected a body").as_bytes(), + )); + + let uid: i32 = msg + .get_uid() + .parse() + .expect("Could not convert message uid to an i32."); + //format!("{}_{}_{}.html", &date_str, &file_name, msg.get_uid()).to_owned() + format!("{:05}_{}_{}.html", uid, date_str, &hash).to_owned() +} + fn process_html(input: &str) -> Result { let mut rules = sanitize_html::rules::predefined::relaxed().delete("style");