From e5fc461a79dc94c26590ecd75a2d307428b16dc3 Mon Sep 17 00:00:00 2001 From: kernelkind Date: Thu, 20 Feb 2025 18:09:52 -0500 Subject: [PATCH] use SupportedMimeType for media_upload Signed-off-by: kernelkind --- crates/notedeck/src/lib.rs | 2 +- crates/notedeck/src/urls.rs | 4 +- crates/notedeck_columns/src/media_upload.rs | 46 ++------------------- 3 files changed, 6 insertions(+), 46 deletions(-) diff --git a/crates/notedeck/src/lib.rs b/crates/notedeck/src/lib.rs index e9f21aca..aa13ff86 100644 --- a/crates/notedeck/src/lib.rs +++ b/crates/notedeck/src/lib.rs @@ -50,7 +50,7 @@ pub use theme::ColorTheme; pub use time::time_ago_since; pub use timecache::TimeCached; pub use unknowns::{get_unknown_note_ids, NoteRefsUnkIdAction, SingleUnkIdAction, UnknownIds}; -pub use urls::{supported_mime_hosted_at_url, UrlMimes}; +pub use urls::{supported_mime_hosted_at_url, SupportedMimeType, UrlMimes}; pub use user_account::UserAccount; // export libs diff --git a/crates/notedeck/src/urls.rs b/crates/notedeck/src/urls.rs index 938dd9eb..ce323222 100644 --- a/crates/notedeck/src/urls.rs +++ b/crates/notedeck/src/urls.rs @@ -214,7 +214,8 @@ impl UrlMimes { } } -struct SupportedMimeType { +#[derive(Debug)] +pub struct SupportedMimeType { mime: mime_guess::Mime, } @@ -238,7 +239,6 @@ impl SupportedMimeType { } } - #[allow(unused)] pub fn to_mime(&self) -> &str { self.mime.essence_str() } diff --git a/crates/notedeck_columns/src/media_upload.rs b/crates/notedeck_columns/src/media_upload.rs index fb6fb411..21acd091 100644 --- a/crates/notedeck_columns/src/media_upload.rs +++ b/crates/notedeck_columns/src/media_upload.rs @@ -3,6 +3,7 @@ use std::path::PathBuf; use base64::{prelude::BASE64_URL_SAFE, Engine}; use ehttp::Request; use nostrdb::{Note, NoteBuilder}; +use notedeck::SupportedMimeType; use poll_promise::Promise; use sha2::{Digest, Sha256}; use url::Url; @@ -232,13 +233,13 @@ fn find_nip94_ev_in_json(json: String) -> Result { pub struct MediaPath { full_path: PathBuf, file_name: String, - media_type: SupportedMediaType, + media_type: SupportedMimeType, } impl MediaPath { pub fn new(path: PathBuf) -> Result { if let Some(ex) = path.extension().and_then(|f| f.to_str()) { - let media_type = SupportedMediaType::from_extension(ex)?; + let media_type = SupportedMimeType::from_extension(ex)?; let file_name = path .file_name() .and_then(|name| name.to_str()) @@ -259,47 +260,6 @@ impl MediaPath { } } -#[derive(Debug)] -pub enum SupportedMediaType { - Png, - Jpeg, - Webp, -} - -impl SupportedMediaType { - pub fn mime_extension(&self) -> &str { - match &self { - SupportedMediaType::Png => "png", - SupportedMediaType::Jpeg => "jpeg", - SupportedMediaType::Webp => "webp", - } - } - - pub fn to_mime(&self) -> String { - format!("{}/{}", self.mime_type(), self.mime_extension()) - } - - fn mime_type(&self) -> String { - match &self { - SupportedMediaType::Png | SupportedMediaType::Jpeg | SupportedMediaType::Webp => { - "image" - } - } - .to_string() - } - - fn from_extension(ext: &str) -> Result { - match ext.to_lowercase().as_str() { - "jpeg" | "jpg" => Ok(SupportedMediaType::Jpeg), - "png" => Ok(SupportedMediaType::Png), - "webp" => Ok(SupportedMediaType::Webp), - unsupported_type => Err(Error::Generic(format!( - "{unsupported_type} is not a valid file type to upload." - ))), - } - } -} - #[derive(Clone, Debug, serde::Deserialize)] pub struct Nip94Event { pub url: String,