commit b627b7c43a137758d2cc9ebcecc5b8588d9afc3d
parent 98e714b166a6ac74e7ca862fb0d1601ee8be5154
Author: triesap <triesap@radroots.dev>
Date: Mon, 19 Jan 2026 07:21:44 +0000
app-utils: add media helpers
- add media resource types
- add upload result formatting helper
- export media helpers from utils crate
- add unit test for media URL formatting
Diffstat:
2 files changed, 42 insertions(+), 0 deletions(-)
diff --git a/crates/utils/src/lib.rs b/crates/utils/src/lib.rs
@@ -6,6 +6,7 @@ pub mod r#async;
pub mod binary;
pub mod currency;
pub mod id;
+pub mod media;
pub mod numbers;
pub mod object;
pub mod path;
@@ -22,6 +23,7 @@ pub use currency::{
FIAT_CURRENCIES,
};
pub use id::{d_tag_create, uuidv4, uuidv4_b64url, uuidv7, uuidv7_b64url};
+pub use media::{fmt_media_image_upload_result_url, MediaImageUploadResult, MediaResource};
pub use errors::{err_msg, handle_err, throw_err, ERR_PREFIX_APP, ERR_PREFIX_UTILS};
pub use numbers::{num_interval_range, num_str, parse_float, parse_int};
pub use object::{obj_en, obj_result, obj_results_str, obj_truthy_fields};
diff --git a/crates/utils/src/media/mod.rs b/crates/utils/src/media/mod.rs
@@ -0,0 +1,40 @@
+#![forbid(unsafe_code)]
+
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub struct MediaResource {
+ pub base_url: String,
+ pub hash: String,
+ pub ext: String,
+}
+
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub struct MediaImageUploadResult {
+ pub base_url: String,
+ pub file_hash: String,
+ pub file_ext: String,
+}
+
+pub fn fmt_media_image_upload_result_url(result: &MediaImageUploadResult) -> String {
+ format!(
+ "{}/{}.{}",
+ result.base_url, result.file_hash, result.file_ext
+ )
+}
+
+#[cfg(test)]
+mod tests {
+ use super::{fmt_media_image_upload_result_url, MediaImageUploadResult};
+
+ #[test]
+ fn fmt_media_url_builds_path() {
+ let result = MediaImageUploadResult {
+ base_url: "https://example.com".to_string(),
+ file_hash: "hash".to_string(),
+ file_ext: "png".to_string(),
+ };
+ assert_eq!(
+ fmt_media_image_upload_result_url(&result),
+ "https://example.com/hash.png"
+ );
+ }
+}