From e24f01a2b5ad7b2dcc54d8985627974991439d14 Mon Sep 17 00:00:00 2001 From: silverpill Date: Sun, 22 Jan 2023 23:45:43 +0000 Subject: [PATCH] Allow custom emojis with image/apng media type --- CHANGELOG.md | 1 + src/mastodon_api/instance/types.rs | 5 +++-- src/models/emojis/validators.rs | 3 ++- src/utils/files.rs | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bbd8bd2..b82ffb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Save sizes of media attachments and other files to database. - Added `import-emoji` command. - Added support for emoji shortcodes. +- Allowed custom emojis with `image/apng` media type. ### Changed diff --git a/src/mastodon_api/instance/types.rs b/src/mastodon_api/instance/types.rs index 3d93622..011e980 100644 --- a/src/mastodon_api/instance/types.rs +++ b/src/mastodon_api/instance/types.rs @@ -28,7 +28,7 @@ struct InstanceStatusLimits { #[derive(Serialize)] struct InstanceMediaLimits { - supported_mime_types: [&'static str; 7], + supported_mime_types: Vec, image_size_limit: usize, } @@ -149,7 +149,8 @@ impl InstanceInfo { max_media_attachments: ATTACHMENTS_MAX_NUM, }, media_attachments: InstanceMediaLimits { - supported_mime_types: SUPPORTED_MEDIA_TYPES, + supported_mime_types: SUPPORTED_MEDIA_TYPES.iter() + .map(|media_type| media_type.to_string()).collect(), image_size_limit: UPLOAD_MAX_SIZE, }, }, diff --git a/src/models/emojis/validators.rs b/src/models/emojis/validators.rs index 219a3b9..440fe76 100644 --- a/src/models/emojis/validators.rs +++ b/src/models/emojis/validators.rs @@ -5,7 +5,8 @@ use crate::errors::ValidationError; const EMOJI_NAME_RE: &str = r"^[\w.]+$"; pub const EMOJI_MAX_SIZE: usize = 250 * 1000; // 250 kB pub const EMOJI_LOCAL_MAX_SIZE: usize = 50 * 1000; // 50 kB -pub const EMOJI_MEDIA_TYPES: [&str; 2] = [ +pub const EMOJI_MEDIA_TYPES: [&str; 3] = [ + "image/apng", "image/gif", "image/png", ]; diff --git a/src/utils/files.rs b/src/utils/files.rs index fc6501b..e83ea06 100644 --- a/src/utils/files.rs +++ b/src/utils/files.rs @@ -13,8 +13,9 @@ use mime_guess::get_mime_extensions_str; use mime_sniffer::MimeTypeSniffer; use sha2::{Digest, Sha256}; -pub const SUPPORTED_MEDIA_TYPES: [&str; 7] = [ +pub const SUPPORTED_MEDIA_TYPES: [&str; 8] = [ "audio/mpeg", + "image/apng", "image/gif", "image/jpeg", "image/png",