refactor(kra): factor out error mapping

This commit is contained in:
electria 2026-07-31 00:24:39 -07:00
commit fca4577c0f
Signed by: electria
SSH key fingerprint: SHA256:8LlB3ucPbBHqozqkhsNbaV5oG3SlzzqUj8FZDL6IPQs

View file

@ -15,19 +15,9 @@ pub fn register() -> bool {
}
fn hook<'a>(reader: GenericReader<'a>) -> ImageResult<Box<dyn ImageDecoder + 'a>> {
let mut zip = ZipArchive::new(reader).map_err(|e| {
ImageError::Decoding(DecodingError::new(
image::error::ImageFormatHint::PathExtension("kra".into()),
e,
))
})?;
let mut zip = ZipArchive::new(reader).map_err(to_image_error)?;
let mut reader = zip.by_name("mergedimage.png").map_err(|e| {
ImageError::Decoding(DecodingError::new(
image::error::ImageFormatHint::PathExtension("kra".into()),
e,
))
})?;
let mut reader = zip.by_name("mergedimage.png").map_err(to_image_error)?;
// reading it all and wrapping it with a Cursor
// is the only way I know to give it Seek
@ -39,3 +29,12 @@ fn hook<'a>(reader: GenericReader<'a>) -> ImageResult<Box<dyn ImageDecoder + 'a>
Ok(Box::new(image_reader.into_decoder()?))
}
fn to_image_error(
e: impl Into<Box<dyn std::error::Error + std::marker::Send + Sync + 'static>>,
) -> ImageError {
ImageError::Decoding(DecodingError::new(
image::error::ImageFormatHint::PathExtension("kra".into()),
e,
))
}