app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

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:
Mcrates/utils/src/lib.rs | 2++
Acrates/utils/src/media/mod.rs | 40++++++++++++++++++++++++++++++++++++++++
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" + ); + } +}