From e497ce11e01f374ab551cda3b36dad6be60c3aad Mon Sep 17 00:00:00 2001 From: phoenix Date: Sun, 16 Mar 2025 15:15:31 -0400 Subject: [PATCH 1/5] Making some changes to address warnings Constants changed --- src/constants.rs | 10 +++++----- src/song.rs | 16 ++++++++-------- src/token.rs | 8 +++++++- src/types.rs | 7 +++---- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/constants.rs b/src/constants.rs index 2cb80f4..51dd5ea 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -1,5 +1,5 @@ -pub const DEFAULT_MUSIC_EXTENSION: &str = FLAC_EXTENSION; -pub const FLAC_EXTENSION: &str = ".flac"; -pub const WAV_EXTENSION: &str = ".wav"; -pub const MPTHREE_EXTENSION: &str = ".mp3"; -pub const JPG_EXTENSION: &str = ".jpg"; +pub const DEFAULTMUSICEXTENSION: &str = FLACEXTENSION; +pub const FLACEXTENSION: &str = ".flac"; +pub const WAVEXTENSION: &str = ".wav"; +pub const MPTHREEEXTENSION: &str = ".mp3"; +pub const JPGEXTENSION: &str = ".jpg"; diff --git a/src/song.rs b/src/song.rs index 1a0fdd6..467a99d 100644 --- a/src/song.rs +++ b/src/song.rs @@ -108,9 +108,9 @@ impl Song { let directory = &self.directory; let mut buffer: String = String::from(directory.clone()); - let lastIndex = directory.len() - 1; + let last_index = directory.len() - 1; - if let Some(character) = directory.chars().nth(lastIndex) { + if let Some(character) = directory.chars().nth(last_index) { if character != '/' { buffer += "/"; } @@ -127,9 +127,9 @@ impl Song { } pub fn to_data(&self) -> Result, std::io::Error> { - let pathResult = self.song_path(); + let path_result = self.song_path(); - match pathResult { + match path_result { Ok(path) => { let mut file = std::fs::File::open(path)?; let mut buffer: Vec = Vec::new(); @@ -175,9 +175,9 @@ mod embedded { let directory = &self.directory; let mut buffer: String = String::from(directory.clone()); - let lastIndex = directory.len() - 1; + let last_index = directory.len() - 1; - if let Some(character) = directory.chars().nth(lastIndex) { + if let Some(character) = directory.chars().nth(last_index) { if character != '/' { buffer += "/"; } @@ -194,9 +194,9 @@ mod embedded { } pub fn to_data(&self) -> Result, std::io::Error> { - let pathResult = self.song_path(); + let path_result = self.song_path(); - match pathResult { + match path_result { Ok(path) => { let mut file = std::fs::File::open(path)?; let mut buffer: Vec = Vec::new(); diff --git a/src/token.rs b/src/token.rs index 04c7723..3934840 100644 --- a/src/token.rs +++ b/src/token.rs @@ -58,7 +58,13 @@ impl Token { } // TODO: Implement - pub fn contains_scope(&self, des_scope: String) -> bool { + pub fn contains_scope(&self, des_scope: &String) -> bool { + let extracted_token: String = String::from("Token"); + + if extracted_token == *des_scope { + return true; + } + return false; } } diff --git a/src/types.rs b/src/types.rs index cd84f04..03881fb 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1,9 +1,8 @@ -use std::default::Default; mod types { pub enum Types { - WAV_EXTENSION, - FLAC_EXTENSION, - MP_EXTENSION, + WavExtension, + FlacExtension, + MPThreeExtension, } } From 04f1ffb1cebeb35b7fba7c78c2514679fd121695 Mon Sep 17 00:00:00 2001 From: KD Date: Wed, 19 Mar 2025 00:45:56 +0000 Subject: [PATCH 2/5] Song changes --- Cargo.toml | 3 +- src/song.rs | 101 +++++++++++++++++++++++++++++++++++++++------------ src/types.rs | 4 +- 3 files changed, 81 insertions(+), 27 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 17a7f14..b03a9ae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,4 +7,5 @@ license = "MIT" [dependencies] serde = { version = "1.0.218", features = ["derive"] } -serde_json = "1.0.139" +serde_json = { version = "1.0.139" } +rand = { version = "0.9" } diff --git a/src/song.rs b/src/song.rs index 467a99d..1ff20f7 100644 --- a/src/song.rs +++ b/src/song.rs @@ -1,6 +1,10 @@ use std::default::Default; use std::io::Read; +use crate::constants; +use crate::types; + +use rand::Rng; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Deserialize, Serialize)] @@ -42,14 +46,14 @@ pub struct Song { pub data: Vec, #[serde(skip)] pub directory: String, - #[serde(skip)] - pub album_id: i32, - #[serde(skip)] - pub artist_id: i32, - #[serde(skip)] - pub genre_id: i32, - #[serde(skip)] - pub coverart_id: i32, + // #[serde(skip)] + // pub album_id: i32, + // #[serde(skip)] + // pub artist_id: i32, + // #[serde(skip)] + // pub genre_id: i32, + // #[serde(skip)] + // pub coverart_id: i32, } fn is_zero(num: &i32) -> bool { @@ -81,10 +85,10 @@ impl Default for Song { user_id: 0, data: Vec::new(), directory: String::new(), - album_id: 0, - artist_id: 0, - genre_id: 0, - coverart_id: 0, + // album_id: 0, + // artist_id: 0, + // genre_id: 0, + // coverart_id: 0, } } } @@ -149,6 +153,55 @@ impl Song { } } } + + pub fn generate_filename(&self, typ: types::types::Types, randomize: bool) -> String { + let mut filename: String = String::new(); + let filename_len = 10; + + let file_extension = match typ { + types::types::Types::DefaultMusicExtension => + { + String::from(constants::DEFAULTMUSICEXTENSION) + } + + types::types::Types::WavExtension => + { + String::from(constants::WAVEXTENSION) + } + types::types::Types::FlacExtension => + { + String::from(constants::FLACEXTENSION) + } + types::types::Types::MPThreeExtension => + { + String::from(constants::MPTHREEEXTENSION) + } + }; + + if randomize { + let some_chars: String = String::from("abcdefghij0123456789"); + let mut rng = rand::thread_rng(); + + for _i in 0..filename_len { + let random_number: i32 = rng.gen_range(0..=19); + let index = random_number as usize; + let rando_char = some_chars.chars().nth(index); + + match rando_char { + Some(c) => { + filename.push(c); + } + None => {} + }; + } + } else { + filename += "track-output"; + } + + filename += &file_extension; + + return filename; + } } mod embedded { @@ -258,14 +311,14 @@ mod embedded { pub data: Vec, #[serde(skip)] pub directory: String, - #[serde(skip)] - pub album_id: i32, - #[serde(skip)] - pub artist_id: i32, - #[serde(skip)] - pub genre_id: i32, - #[serde(skip)] - pub coverart_id: i32, + // #[serde(skip)] + // pub album_id: i32, + // #[serde(skip)] + // pub artist_id: i32, + // #[serde(skip)] + // pub genre_id: i32, + // #[serde(skip)] + // pub coverart_id: i32, } fn is_embed_zero(num: &i32) -> bool { @@ -297,10 +350,10 @@ mod embedded { user_id: 0, data: Vec::new(), directory: String::new(), - album_id: 0, - artist_id: 0, - genre_id: 0, - coverart_id: 0, + // album_id: 0, + // artist_id: 0, + // genre_id: 0, + // coverart_id: 0, } } } diff --git a/src/types.rs b/src/types.rs index 03881fb..1cc0995 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1,6 +1,6 @@ - -mod types { +pub mod types { pub enum Types { + DefaultMusicExtension, WavExtension, FlacExtension, MPThreeExtension, From 98c518e1493c7c06cc695378e4529c7a9e9cd51c Mon Sep 17 00:00:00 2001 From: KD Date: Wed, 19 Mar 2025 00:56:17 +0000 Subject: [PATCH 3/5] Added Album collection --- src/album.rs | 31 +++++++++++++++++++++++++++++++ src/lib.rs | 1 + 2 files changed, 32 insertions(+) create mode 100644 src/album.rs diff --git a/src/album.rs b/src/album.rs new file mode 100644 index 0000000..f0db09b --- /dev/null +++ b/src/album.rs @@ -0,0 +1,31 @@ +pub mod collection { + use serde::{Deserialize, Serialize}; + + fn is_set(num: &i32) -> bool { + *num >= 0 + } + + #[derive(Clone, Debug, Deserialize, Serialize)] + pub struct Album { + #[serde(skip_serializing_if = "String::is_empty")] + #[serde(alias = "album")] + pub title: String, + pub genre: String, + pub year: i32, + pub track_count: i32, + #[serde(skip_serializing_if = "is_set")] + pub disc_count: i32, + #[serde(skip_serializing_if = "Vec::is_empty")] + pub tracks: Vec, + } + + #[derive(Clone, Debug, Deserialize, Serialize)] + pub struct Track { + pub title: String, + pub artist: String, + pub disc: i32, + pub track: i32, + // In seconds + pub duration: f64, + } +} diff --git a/src/lib.rs b/src/lib.rs index 425aff6..723b0fc 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,5 @@ pub mod access_level; +pub mod album; pub mod constants; pub mod login_result; pub mod song; From 7f8649ee3837c9d95135075704cac2369eb54796 Mon Sep 17 00:00:00 2001 From: KD Date: Fri, 21 Mar 2025 00:18:38 +0000 Subject: [PATCH 4/5] Added coverart struct --- src/coverart.rs | 27 +++++++++++++++++++++++++++ src/lib.rs | 1 + src/song.rs | 18 ++++-------------- 3 files changed, 32 insertions(+), 14 deletions(-) create mode 100644 src/coverart.rs diff --git a/src/coverart.rs b/src/coverart.rs new file mode 100644 index 0000000..4703823 --- /dev/null +++ b/src/coverart.rs @@ -0,0 +1,27 @@ +use std::io::Read; + +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct CoverArt { + pub id: i32, + pub title: String, + pub path: String, + pub data: Vec, +} + +impl CoverArt { + pub fn to_data(&self) -> Result, std::io::Error> { + let path: &String = &self.path; + let mut file = std::fs::File::open(path)?; + let mut buffer = Vec::new(); + match file.read_to_end(&mut buffer) { + Ok(_) => { + return Ok(buffer); + } + Err(err) => { + return Err(err); + } + } + } +} diff --git a/src/lib.rs b/src/lib.rs index 723b0fc..da15f76 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,7 @@ pub mod access_level; pub mod album; pub mod constants; +pub mod coverart; pub mod login_result; pub mod song; pub mod token; diff --git a/src/song.rs b/src/song.rs index 1ff20f7..b024a62 100644 --- a/src/song.rs +++ b/src/song.rs @@ -159,23 +159,13 @@ impl Song { let filename_len = 10; let file_extension = match typ { - types::types::Types::DefaultMusicExtension => - { + types::types::Types::DefaultMusicExtension => { String::from(constants::DEFAULTMUSICEXTENSION) } - types::types::Types::WavExtension => - { - String::from(constants::WAVEXTENSION) - } - types::types::Types::FlacExtension => - { - String::from(constants::FLACEXTENSION) - } - types::types::Types::MPThreeExtension => - { - String::from(constants::MPTHREEEXTENSION) - } + types::types::Types::WavExtension => String::from(constants::WAVEXTENSION), + types::types::Types::FlacExtension => String::from(constants::FLACEXTENSION), + types::types::Types::MPThreeExtension => String::from(constants::MPTHREEEXTENSION), }; if randomize { From e366202f24b1d4d472ad6a41bdc65f9700abbe21 Mon Sep 17 00:00:00 2001 From: phoenix Date: Thu, 20 Mar 2025 20:34:59 -0400 Subject: [PATCH 5/5] Version bump to v0.1.14 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index b03a9ae..90b37f5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "icarus-models" -version = "0.1.10" +version = "0.1.14" edition = "2024" description = "models used for the icarus project" license = "MIT"