diff --git a/src/coverart.rs b/src/coverart.rs index 259ed35..caad5a4 100644 --- a/src/coverart.rs +++ b/src/coverart.rs @@ -1,7 +1,11 @@ use std::io::Write; +use rand::Rng; use serde::{Deserialize, Serialize}; + +const FILENAME_LENGTH: i32 = 16; + #[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] pub struct CoverArt { pub id: uuid::Uuid, @@ -89,6 +93,40 @@ impl CoverArt { } } +/// Generates filename for a CoverArt +pub fn generate_filename(typ: crate::types::CoverArtTypes, randomize: bool) -> String { + let file_extension = match typ { + crate::types::CoverArtTypes::PngExtension => { + String::from(crate::constants::file_extensions::image::PNGEXTENSION) + } + crate::types::CoverArtTypes::JpegExtension => { + String::from(crate::constants::file_extensions::image::JPEGEXTENSION) + } + crate::types::CoverArtTypes::JpgExtension => { + String::from(crate::constants::file_extensions::image::JPGEXTENSION) + } + }; + + if randomize { + let mut filename: String = String::new(); + let some_chars: String = String::from("abcdefghij0123456789"); + let some_chars_length = some_chars.len(); + let mut rng = rand::rng(); + + for _ in 0..FILENAME_LENGTH { + let index = rng.random_range(0..=some_chars_length); + let rando_char = some_chars.chars().nth(index); + + if let Some(c) = rando_char { + filename.push(c); + } + } + filename + &file_extension + } else { + "track-output".to_string() + &file_extension + } +} + pub mod io { use std::io::Read; diff --git a/src/types.rs b/src/types.rs index e518320..f9e145f 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1,6 +1,14 @@ +#[derive(Debug)] pub enum MusicTypes { DefaultMusicExtension, WavExtension, FlacExtension, MPThreeExtension, } + +#[derive(Debug)] +pub enum CoverArtTypes { + PngExtension, + JpegExtension, + JpgExtension, +}