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 +}