diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cfb277..93d539f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Added `registration.default_role` configuration option. - Save emojis attached to actor objects. +### Changed + +- Use .jpg extension for files with image/jpeg media type. + ### Deprecated - Deprecated `default_role_read_only_user` configuration option (replaced by `registration.default_role`). diff --git a/Cargo.toml b/Cargo.toml index 622fad1..d82018b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,8 @@ members = [ default-members = [ ".", "mitra-cli", + "mitra-config", + "mitra-utils", ] [dependencies] diff --git a/mitra-utils/src/files.rs b/mitra-utils/src/files.rs index d618fd8..02d6795 100644 --- a/mitra-utils/src/files.rs +++ b/mitra-utils/src/files.rs @@ -15,10 +15,16 @@ pub fn sniff_media_type(data: &[u8]) -> Option { data.sniff_mime_type().map(|val| val.to_string()) } -pub fn get_media_type_extension(media_type: &str) -> Option { - get_mime_extensions_str(media_type) - .and_then(|extensions| extensions.first()) - .map(|extension| extension.to_string()) +pub fn get_media_type_extension(media_type: &str) -> Option<&'static str> { + match media_type { + // Override extension provided by mime_guess + "image/jpeg" => Some("jpg"), + _ => { + get_mime_extensions_str(media_type) + .and_then(|extensions| extensions.first()) + .copied() + } + } } pub fn write_file(data: &[u8], file_path: &Path) -> Result<(), Error> { @@ -32,3 +38,20 @@ pub fn set_file_permissions(file_path: &Path, mode: u32) -> Result<(), Error> { set_permissions(file_path, permissions)?; Ok(()) } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_get_media_type_extension() { + assert_eq!( + get_media_type_extension("image/png"), + Some("png"), + ); + assert_eq!( + get_media_type_extension("image/jpeg"), + Some("jpg"), + ); + } +}