✨ feat(gmail): enhance message metadata retrieval
- add date header to message metadata retrieval - retrieve date and subject from email headers - set date and subject for each message in the list
This commit is contained in:
committed by
Jeremiah Russell
parent
f3a1edaf1f
commit
9f4b2fa6ae
@@ -202,38 +202,47 @@ impl MessageList for GmailClient {
|
|||||||
let (_res, m) = hub
|
let (_res, m) = hub
|
||||||
.users()
|
.users()
|
||||||
.messages_get("me", message.id())
|
.messages_get("me", message.id())
|
||||||
.add_scope("https://www.googleapis.com/auth/gmail.metadata")
|
.add_scope("https://mail.google.com/")
|
||||||
.format("metadata")
|
.format("metadata")
|
||||||
.add_metadata_headers("subject")
|
.add_metadata_headers("subject")
|
||||||
|
.add_metadata_headers("date")
|
||||||
.doit()
|
.doit()
|
||||||
.await
|
.await
|
||||||
.map_err(Box::new)?;
|
.map_err(Box::new)?;
|
||||||
|
|
||||||
let mut subject = String::new();
|
let mut subject = String::new();
|
||||||
|
let mut date = String::new();
|
||||||
let Some(payload) = m.payload else { continue };
|
let Some(payload) = m.payload else { continue };
|
||||||
let Some(headers) = payload.headers else {
|
let Some(headers) = payload.headers else {
|
||||||
continue;
|
continue;
|
||||||
};
|
};
|
||||||
|
|
||||||
for header in headers {
|
for header in headers {
|
||||||
if header.name.is_some()
|
if let Some(name) = header.name {
|
||||||
&& header.name.unwrap() == "Subject"
|
match name.to_lowercase().as_str() {
|
||||||
&& header.value.is_some()
|
"subject" => subject = header.value.unwrap_or_default(),
|
||||||
{
|
"date" => date = header.value.unwrap_or_default(),
|
||||||
subject = header.value.unwrap();
|
_ => {}
|
||||||
break;
|
}
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if date.is_empty() {
|
||||||
|
log::info!("***No orig-date field***");
|
||||||
|
} else {
|
||||||
|
message.set_date(&date);
|
||||||
|
}
|
||||||
|
|
||||||
if subject.is_empty() {
|
if subject.is_empty() {
|
||||||
log::info!("***Email with no subject***");
|
log::info!("***Email with no subject***");
|
||||||
} else {
|
} else {
|
||||||
subject.elide(24);
|
subject.elide(24);
|
||||||
message.set_subject(&subject);
|
message.set_subject(&subject);
|
||||||
log::info!("{subject:?}");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log::info!("{}", message.list_date_and_subject());
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
Reference in New Issue
Block a user