notmuch: add show_part method.

This commit is contained in:
Bill Thiede 2021-11-09 20:35:52 -08:00
parent f809f89dd0
commit b57e4d9df2

View File

@ -508,6 +508,25 @@ impl Notmuch {
Ok(val)
}
pub fn show_part(&self, query: &str, part: usize) -> Result<Part, NotmuchError> {
let slice = self.run_notmuch([
"show",
"--include-html=true",
"--entire-thread=true",
"--format=json",
&format!("--part={}", part),
query,
])?;
// Notmuch returns JSON with invalid unicode. So we lossy convert it to a string here an
// use that for parsing in rust.
let s = String::from_utf8_lossy(&slice);
let mut deserializer = serde_json::Deserializer::from_str(&s);
deserializer.disable_recursion_limit();
let val = serde::de::Deserialize::deserialize(&mut deserializer)?;
deserializer.end()?;
Ok(val)
}
pub fn show_original(&self, id: &MessageId) -> Result<Vec<u8>, NotmuchError> {
self.show_original_part(id, 0)
}