Refactor errors

This commit is contained in:
2026-03-12 23:04:59 -07:00
parent 60483dd53d
commit 26a428dedc
17 changed files with 192 additions and 161 deletions

View File

@@ -32,9 +32,7 @@ impl ExifExtractor {
let reader = SyncReadBridge::new_current(self.item.read().await?);
let raw_fields = tokio::task::spawn_blocking(move || {
let mut br = BufReader::new(reader);
let exif = exif::Reader::new()
.read_from_container(&mut br)
.map_err(|e| std::io::Error::new(std::io::ErrorKind::InvalidData, e.to_string()))?;
let exif = exif::Reader::new().read_from_container(&mut br)?;
let fields: Vec<(String, String)> = exif
.fields()
@@ -46,13 +44,13 @@ impl ExifExtractor {
})
.collect();
Ok::<_, std::io::Error>(fields)
Ok::<_, exif::Error>(fields)
})
.await
.map_err(std::io::Error::other)?;
.await?;
let raw_fields = match raw_fields {
Ok(x) => x,
Err(exif::Error::Io(x)) => return Err(x),
Err(error) => {
trace!(message = "Could not process exif", ?error, key = ?self.item.key());
return Ok(self.output.get_or_init(HashMap::new));
@@ -65,6 +63,7 @@ impl ExifExtractor {
let Some(label) = tag_to_label(&tag_name) else {
continue;
};
// First occurrence wins (PRIMARY IFD comes before THUMBNAIL)
output
.entry(label)
@@ -91,6 +90,12 @@ impl ObjectExtractor for ExifExtractor {
name: &Label,
args: Option<&str>,
) -> Result<Option<PileValue>, std::io::Error> {
trace!(
?args,
key = self.item.key().as_str(),
"Getting field {name:?} from ExifExtractor",
);
if args.is_some() {
return Ok(None);
}