From cbe61ab2f3fb4957998aaf610760d9908d9f9c8c Mon Sep 17 00:00:00 2001 From: Jeremiah Russell Date: Sat, 4 Oct 2025 09:01:42 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(message):=20impro?= =?UTF-8?q?ve=20subject=20logging=20with=20early=20returns?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - use early returns and `else` blocks for better readability and reduced nesting - add a log message to indicate emails with no subject --- src/message.rs | 68 +++++++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/src/message.rs b/src/message.rs index 309dc65..3e981cd 100644 --- a/src/message.rs +++ b/src/message.rs @@ -163,41 +163,47 @@ impl Message { } async fn log_message_subjects(&self, list: &ListMessagesResponse) -> Result<(), Error> { - if let Some(messages) = &list.messages { - for message in messages { - if let Some(id) = &message.id { - log::trace!("{id}"); - let (_res, m) = self - .hub - .users() - .messages_get("me", id) - .add_scope("https://www.googleapis.com/auth/gmail.metadata") - .format("metadata") - .add_metadata_headers("subject") - .doit() - .await - .map_err(Box::new)?; + let Some(messages) = &list.messages else { + return Ok(()); + }; - let mut subject = String::new(); - if let Some(payload) = m.payload { - if let Some(headers) = payload.headers { - for header in headers { - if header.name.is_some() - && header.name.unwrap() == "Subject" - && header.value.is_some() - { - subject = header.value.unwrap(); - break; - } else { - continue; - } - } - } - } + for message in messages { + let Some(id) = &message.id else { continue }; + log::trace!("{id}"); + let (_res, m) = self + .hub + .users() + .messages_get("me", id) + .add_scope("https://www.googleapis.com/auth/gmail.metadata") + .format("metadata") + .add_metadata_headers("subject") + .doit() + .await + .map_err(Box::new)?; - log::info!("{subject:?}"); + let mut subject = 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; + } else { + continue; } } + + if subject.is_empty() { + log::info!("***Email with no subject***"); + } else { + log::info!("{subject:?}"); + } } Ok(())