♻️ refactor(message): improve subject logging with early returns

- use early returns and `else` blocks for better readability and reduced nesting
- add a log message to indicate emails with no subject
This commit is contained in:
Jeremiah Russell
2025-10-04 09:01:42 +01:00
committed by Jeremiah Russell
parent 7ba4b09fc2
commit cbe61ab2f3

View File

@@ -163,41 +163,47 @@ impl Message {
} }
async fn log_message_subjects(&self, list: &ListMessagesResponse) -> Result<(), Error> { async fn log_message_subjects(&self, list: &ListMessagesResponse) -> Result<(), Error> {
if let Some(messages) = &list.messages { let Some(messages) = &list.messages else {
for message in messages { return Ok(());
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 mut subject = String::new(); for message in messages {
if let Some(payload) = m.payload { let Some(id) = &message.id else { continue };
if let Some(headers) = payload.headers { log::trace!("{id}");
for header in headers { let (_res, m) = self
if header.name.is_some() .hub
&& header.name.unwrap() == "Subject" .users()
&& header.value.is_some() .messages_get("me", id)
{ .add_scope("https://www.googleapis.com/auth/gmail.metadata")
subject = header.value.unwrap(); .format("metadata")
break; .add_metadata_headers("subject")
} else { .doit()
continue; .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(()) Ok(())