From 440caca7c2bce23d557d2bd6a97079d70638b120 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 11 Oct 2025 20:11:39 +0000 Subject: [PATCH 1/3] Moved to_data (#66) Reviewed-on: https://git.kundeng.us/phoenix/icarus_models/pulls/66 Co-authored-by: phoenix Co-committed-by: phoenix --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/coverart.rs | 17 ++++++++++------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5bd15fa..ef3fd86 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -142,7 +142,7 @@ checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" [[package]] name = "icarus_models" -version = "0.6.3" +version = "0.6.4" dependencies = [ "josekit", "rand", diff --git a/Cargo.toml b/Cargo.toml index 6379891..5f10bcb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "icarus_models" -version = "0.6.3" +version = "0.6.4" edition = "2024" rust-version = "1.88" description = "models used for the icarus project" diff --git a/src/coverart.rs b/src/coverart.rs index edb5de4..d6741bf 100644 --- a/src/coverart.rs +++ b/src/coverart.rs @@ -1,5 +1,3 @@ -use std::io::Read; - use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] @@ -28,8 +26,16 @@ pub mod init { } impl CoverArt { - pub fn to_data(&self) -> Result, std::io::Error> { - let path: &String = &self.path; + // TODO: Add method to save to filesystem + // TODO: Add method to remove from filesystem +} + +pub mod io { + use std::io::Read; + + /// Gets the raw data of the cover art + pub fn to_data(coverart: &super::CoverArt) -> Result, std::io::Error> { + let path: &String = &coverart.path; let mut file = std::fs::File::open(path)?; let mut buffer = Vec::new(); match file.read_to_end(&mut buffer) { @@ -37,9 +43,6 @@ impl CoverArt { Err(err) => Err(err), } } - - // TODO: Add method to save to filesystem - // TODO: Add method to remove from filesystem } #[cfg(test)] -- 2.43.0 From e3ca2c5781c9d7dbde348a7957422a79094b8260 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 11 Oct 2025 20:30:39 +0000 Subject: [PATCH 2/3] Coverart save to filesystem (#67) Reviewed-on: https://git.kundeng.us/phoenix/icarus_models/pulls/67 Co-authored-by: phoenix Co-committed-by: phoenix --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/coverart.rs | 14 +++++++++++++- src/song.rs | 2 +- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ef3fd86..b72049e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -142,7 +142,7 @@ checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" [[package]] name = "icarus_models" -version = "0.6.4" +version = "0.6.5" dependencies = [ "josekit", "rand", diff --git a/Cargo.toml b/Cargo.toml index 5f10bcb..a1b9ebd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "icarus_models" -version = "0.6.4" +version = "0.6.5" edition = "2024" rust-version = "1.88" description = "models used for the icarus project" diff --git a/src/coverart.rs b/src/coverart.rs index d6741bf..5444a3e 100644 --- a/src/coverart.rs +++ b/src/coverart.rs @@ -1,3 +1,5 @@ +use std::io::Write; + use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] @@ -26,7 +28,17 @@ pub mod init { } impl CoverArt { - // TODO: Add method to save to filesystem + /// Saves the coverart to the filesystem + pub fn save_to_filesystem(&self) -> Result<(), std::io::Error> { + match std::fs::File::create(&self.path) { + Ok(mut file) => match file.write_all(&self.data) { + Ok(_) => Ok(()), + Err(err) => Err(err), + }, + Err(err) => Err(err), + } + } + // TODO: Add method to remove from filesystem } diff --git a/src/song.rs b/src/song.rs index 183d08b..7ebc487 100644 --- a/src/song.rs +++ b/src/song.rs @@ -113,7 +113,7 @@ impl Song { Ok(song_path) => { let p = std::path::Path::new(&song_path); if p.exists() { - match std::fs::remove_file(&p) { + match std::fs::remove_file(p) { Ok(_) => Ok(()), Err(err) => Err(err), } -- 2.43.0 From eac7562b80b9f82d21ab737d1e84ba4f12e472dd Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 11 Oct 2025 22:14:10 +0000 Subject: [PATCH 3/3] Coverart remove file (#68) Reviewed-on: https://git.kundeng.us/phoenix/icarus_models/pulls/68 Co-authored-by: phoenix Co-committed-by: phoenix --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/coverart.rs | 15 ++++++++++++++- src/song.rs | 4 +++- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b72049e..a044124 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -142,7 +142,7 @@ checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" [[package]] name = "icarus_models" -version = "0.6.5" +version = "0.6.6" dependencies = [ "josekit", "rand", diff --git a/Cargo.toml b/Cargo.toml index a1b9ebd..5778e36 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "icarus_models" -version = "0.6.5" +version = "0.6.6" edition = "2024" rust-version = "1.88" description = "models used for the icarus project" diff --git a/src/coverart.rs b/src/coverart.rs index 5444a3e..06ac2fc 100644 --- a/src/coverart.rs +++ b/src/coverart.rs @@ -39,7 +39,20 @@ impl CoverArt { } } - // TODO: Add method to remove from filesystem + /// Removes the coverart from the filesystem + pub fn remove_from_filesystem(&self) -> Result<(), std::io::Error> { + let p = std::path::Path::new(&self.path); + if p.exists() { + match std::fs::remove_file(p) { + Ok(_) => Ok(()), + Err(err) => Err(err), + } + } else { + Err(std::io::Error::other( + "Cannot delete file that does not exist", + )) + } + } } pub mod io { diff --git a/src/song.rs b/src/song.rs index 7ebc487..230b516 100644 --- a/src/song.rs +++ b/src/song.rs @@ -118,7 +118,9 @@ impl Song { Err(err) => Err(err), } } else { - Ok(()) + Err(std::io::Error::other( + "Cannot delete file that does not exist", + )) } } Err(err) => Err(err), -- 2.43.0