From 9f4b2fa6ae749406cdf0e88b5b5a7b6e0e1b05b4 Mon Sep 17 00:00:00 2001 From: Jeremiah Russell Date: Tue, 14 Oct 2025 16:02:08 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(gmail):=20enhance=20message=20?= =?UTF-8?q?metadata=20retrieval?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add date header to message metadata retrieval - retrieve date and subject from email headers - set date and subject for each message in the list --- src/message_list.rs | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/message_list.rs b/src/message_list.rs index 4349596..f979c3b 100644 --- a/src/message_list.rs +++ b/src/message_list.rs @@ -202,38 +202,47 @@ impl MessageList for GmailClient { let (_res, m) = hub .users() .messages_get("me", message.id()) - .add_scope("https://www.googleapis.com/auth/gmail.metadata") + .add_scope("https://mail.google.com/") .format("metadata") .add_metadata_headers("subject") + .add_metadata_headers("date") .doit() .await .map_err(Box::new)?; let mut subject = String::new(); + let mut date = String::new(); let Some(payload) = m.payload else { continue }; let Some(headers) = payload.headers else { continue; }; for header in headers { - if header.name.is_some() - && header.name.unwrap() == "Subject" - && header.value.is_some() - { - subject = header.value.unwrap(); - break; + if let Some(name) = header.name { + match name.to_lowercase().as_str() { + "subject" => subject = header.value.unwrap_or_default(), + "date" => date = header.value.unwrap_or_default(), + _ => {} + } } else { continue; } } + if date.is_empty() { + log::info!("***No orig-date field***"); + } else { + message.set_date(&date); + } + if subject.is_empty() { log::info!("***Email with no subject***"); } else { subject.elide(24); message.set_subject(&subject); - log::info!("{subject:?}"); } + + log::info!("{}", message.list_date_and_subject()); } Ok(())