From 097701348f402549208af34ec5b6e3186d06e1b9 Mon Sep 17 00:00:00 2001 From: raiyyan Date: Thu, 4 Dec 2025 03:36:09 +0530 Subject: [PATCH] feat: Expose media file size and filename length constants --- CONTRIBUTORS | 1 + proto/anki/media.proto | 7 +++++++ rslib/src/media/service.rs | 17 +++++++++++++++-- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 2ec25da2d..8d1088a3e 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -255,6 +255,7 @@ Ranjit Odedra Eltaurus jariji Francisco Esteva +Raiyyan ******************** diff --git a/proto/anki/media.proto b/proto/anki/media.proto index 76d42931a..e8ae05474 100644 --- a/proto/anki/media.proto +++ b/proto/anki/media.proto @@ -18,6 +18,7 @@ service MediaService { rpc RestoreTrash(generic.Empty) returns (generic.Empty); rpc ExtractStaticMediaFiles(notetypes.NotetypeId) returns (generic.StringList); + rpc GetMediaConstants(generic.Empty) returns (MediaConstants); } // Implicitly includes any of the above methods that are not listed in the @@ -40,3 +41,9 @@ message AddMediaFileRequest { string desired_name = 1; bytes data = 2; } + +message MediaConstants { + int64 max_individual_media_file_size = 1; + int64 max_media_filename_length = 2; + int64 max_media_filename_length_server = 3; +} diff --git a/rslib/src/media/service.rs b/rslib/src/media/service.rs index b2ec99d1d..bd6b4a2ac 100644 --- a/rslib/src/media/service.rs +++ b/rslib/src/media/service.rs @@ -1,10 +1,12 @@ -use std::collections::HashSet; - // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html + +use std::collections::HashSet; + use anki_proto::generic; use anki_proto::media::AddMediaFileRequest; use anki_proto::media::CheckMediaResponse; +use anki_proto::media::MediaConstants; use anki_proto::media::TrashMediaFilesRequest; use crate::collection::Collection; @@ -12,6 +14,9 @@ use crate::error; use crate::error::OrNotFound; use crate::notes::service::to_i64s; use crate::notetype::NotetypeId; +use crate::sync::media::MAX_INDIVIDUAL_MEDIA_FILE_SIZE; +use crate::sync::media::MAX_MEDIA_FILENAME_LENGTH; +use crate::sync::media::MAX_MEDIA_FILENAME_LENGTH_SERVER; impl crate::services::MediaService for Collection { fn check_media(&mut self) -> error::Result { @@ -66,4 +71,12 @@ impl crate::services::MediaService for Collection { Ok(files.into_iter().collect::>().into()) } + + fn get_media_constants(&mut self) -> error::Result { + Ok(MediaConstants { + max_individual_media_file_size: MAX_INDIVIDUAL_MEDIA_FILE_SIZE as i64, + max_media_filename_length: MAX_MEDIA_FILENAME_LENGTH as i64, + max_media_filename_length_server: MAX_MEDIA_FILENAME_LENGTH_SERVER as i64, + }) + } }