From bf68eb3ea82d6bc7c332abde90ada3de16340c32 Mon Sep 17 00:00:00 2001 From: kernelkind Date: Thu, 20 Feb 2025 17:43:22 -0500 Subject: [PATCH] add SupportedMimeType Signed-off-by: kernelkind --- crates/notedeck/src/urls.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/crates/notedeck/src/urls.rs b/crates/notedeck/src/urls.rs index 2ccafa6c..0705aa43 100644 --- a/crates/notedeck/src/urls.rs +++ b/crates/notedeck/src/urls.rs @@ -212,3 +212,30 @@ impl UrlMimes { } } } + +struct SupportedMimeType { + mime: mime_guess::Mime, +} + +impl SupportedMimeType { + #[allow(unused)] + pub fn from_extension(extension: &str) -> Result { + if let Some(mime) = mime_guess::from_ext(extension) + .first() + .filter(is_mime_supported) + { + Ok(Self { mime }) + } else { + Err(Error::Generic("Unsupported mime type".to_owned())) + } + } + + #[allow(unused)] + pub fn to_mime(&self) -> &str { + self.mime.essence_str() + } +} + +fn is_mime_supported(mime: &mime_guess::Mime) -> bool { + mime.type_() == mime_guess::mime::IMAGE +}