diff --git a/Cargo.lock b/Cargo.lock index f9483a7..b3da43f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -533,8 +533,8 @@ dependencies = [ [[package]] name = "icarus_models" -version = "0.5.6" -source = "git+ssh://git@git.kundeng.us/phoenix/icarus_models.git?tag=v0.5.6#2d6b550ae6721b41ecc3039799f6a5e873869077" +version = "0.6.6" +source = "git+ssh://git@git.kundeng.us/phoenix/icarus_models.git?tag=v0.6.6-65-eac7562b80-111#eac7562b80b9f82d21ab737d1e84ba4f12e472dd" dependencies = [ "josekit", "rand", @@ -1320,7 +1320,7 @@ dependencies = [ [[package]] name = "songparser" -version = "0.3.1" +version = "0.3.2" dependencies = [ "futures", "icarus_envy", diff --git a/Cargo.toml b/Cargo.toml index 5079145..2259c0e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "songparser" -version = "0.3.1" +version = "0.3.2" edition = "2024" rust-version = "1.88" @@ -14,5 +14,5 @@ time = { version = "0.3.41", features = ["macros", "serde"] } uuid = { version = "1.17.0", features = ["v4", "serde"] } rand = { version = "0.9.1" } icarus_meta = { git = "ssh://git@git.kundeng.us/phoenix/icarus_meta.git", tag = "v0.3.0" } -icarus_models = { git = "ssh://git@git.kundeng.us/phoenix/icarus_models.git", tag = "v0.5.6" } +icarus_models = { git = "ssh://git@git.kundeng.us/phoenix/icarus_models.git", tag = "v0.6.6-65-eac7562b80-111" } icarus_envy = { git = "ssh://git@git.kundeng.us/phoenix/icarus_envy.git", tag = "v0.4.1-main-8f0d123db5-006" } diff --git a/src/main.rs b/src/main.rs index 815c343..88c20d9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,8 +5,6 @@ pub mod the_rest; pub mod update_queued_song; pub mod util; -use std::io::Write; - pub const SECONDS_TO_SLEEP: u64 = 5; #[tokio::main] @@ -64,24 +62,22 @@ async fn main() -> Result<(), Box> { // TODO: Do something with the result later match some_work(&app, &song_queue_id, &user_id).await { Ok(( - _song, - _coverart, - (song_queue_id, song_queue_path), - (coverart_queue_id, coverart_queue_path), + song, + coverart, + (song_queue_id, _song_queue_path), + (coverart_queue_id, _coverart_queue_path), )) => { match wipe_data_from_queues(&app, &song_queue_id, &coverart_queue_id) .await { - Ok(_) => { - match cleanup(&song_queue_path, &coverart_queue_path).await { - Ok(_) => { - println!("Successful cleanup"); - } - Err(err) => { - eprintln!("Error: {err:?}"); - } + Ok(_) => match cleanup(&song, &coverart).await { + Ok(_) => { + println!("Successful cleanup"); } - } + Err(err) => { + eprintln!("Error: {err:?}"); + } + }, Err(err) => { eprintln!("Error: {err:?}"); } @@ -206,17 +202,17 @@ async fn wipe_data_from_queues( } async fn cleanup( - song_queue_path: &String, - coverart_queue_path: &String, + song: &icarus_models::song::Song, + coverart: &icarus_models::coverart::CoverArt, ) -> Result<(), std::io::Error> { - match the_rest::cleanup::clean_song_queue(song_queue_path) { + match song.remove_from_filesystem() { Ok(_) => {} Err(err) => { eprintln!("Error: Problem cleaning up SongQueue files {err:?}"); } } - match the_rest::cleanup::clean_coverart_queue(coverart_queue_path) { + match coverart.remove_from_filesystem() { Ok(_) => Ok(()), Err(err) => Err(err), } @@ -346,7 +342,17 @@ async fn prep_song( match api::parsing::parse_response_into_bytes(response).await { Ok(song_bytes) => { let (directory, filename) = generate_song_queue_dir_and_filename().await; - let song_queue_path = save_file_to_fs(&directory, &filename, &song_bytes).await; + let song = icarus_models::song::Song { + directory, + filename, + data: song_bytes, + ..Default::default() + }; + let songpath = song.song_path().unwrap_or_default(); + let song_queue_path = match song.save_to_filesystem() { + Ok(_) => std::path::Path::new(&songpath), + Err(_err) => std::path::Path::new(""), + }; println!("Saved at: {song_queue_path:?}"); @@ -376,12 +382,17 @@ async fn prep_song( Ok(response) => match api::parsing::parse_response_into_bytes(response).await { Ok(coverart_queue_bytes) => { let (directory, filename) = generate_coverart_queue_dir_and_filename().await; - let coverart_queue_path = save_file_to_fs(&directory, &filename, &coverart_queue_bytes).await; - + let coverart = icarus_models::coverart::CoverArt { + path: directory + "/" + &filename, + data: coverart_queue_bytes, + ..Default::default() + }; + coverart.save_to_filesystem().unwrap(); + let coverart_queue_path = std::path::Path::new(&coverart.path); println!("Saved coverart queue file at: {coverart_queue_path:?}"); - let c_path = util::path_buf_to_string(&coverart_queue_path); - let s_path = util::path_buf_to_string(&song_queue_path); + let c_path = util::path_buf_to_string(coverart_queue_path); + let s_path = util::path_buf_to_string(song_queue_path); Ok((s_path, c_path, metadata.clone(), *coverart_queue_id)) } Err(err) => { @@ -417,7 +428,10 @@ async fn prep_song( // TODO: Consider having something like this in icarus_models pub async fn generate_song_queue_dir_and_filename() -> (String, String) { let mut song = icarus_models::song::Song::default(); - song.filename = song.generate_filename(icarus_models::types::MusicTypes::FlacExtension, true); + song.filename = icarus_models::song::generate_filename( + icarus_models::types::MusicTypes::FlacExtension, + true, + ); song.directory = icarus_envy::environment::get_root_directory().await.value; @@ -453,23 +467,6 @@ pub async fn generate_coverart_queue_dir_and_filename() -> (String, String) { (directory, filename) } -// TODO: Check to see if this is available in icarus_models -pub async fn save_file_to_fs( - directory: &String, - filename: &String, - data: &[u8], -) -> std::path::PathBuf { - // TODO: Add function to save bytes to a file in icarus_models - // repo - let dir = std::path::Path::new(directory); - let save_path = dir.join(filename); - - let mut file = std::fs::File::create(&save_path).unwrap(); - file.write_all(data).unwrap(); - - save_path -} - pub async fn apply_metadata( song_queue_path: &String, coverart_queue_path: &String, diff --git a/src/the_rest.rs b/src/the_rest.rs index 08aeb4b..5d66e39 100644 --- a/src/the_rest.rs +++ b/src/the_rest.rs @@ -126,54 +126,3 @@ pub mod wipe_data { } } } - -pub mod cleanup { - pub fn clean_song_queue(song_queue_path: &String) -> Result<(), std::io::Error> { - let file_path = std::path::Path::new(song_queue_path); - if file_path.exists() { - match std::fs::remove_file(file_path) { - Ok(_) => { - if check_file_existence(song_queue_path) { - Err(std::io::Error::other(String::from( - "SongQueue file exists after a deletion", - ))) - } else { - Ok(()) - } - } - Err(err) => Err(std::io::Error::other(err.to_string())), - } - } else { - Err(std::io::Error::other(String::from( - "SongQueue file path does not exists", - ))) - } - } - - pub fn clean_coverart_queue(coverart_queue_path: &String) -> Result<(), std::io::Error> { - let coverart_file_path = std::path::Path::new(coverart_queue_path); - if coverart_file_path.exists() { - match std::fs::remove_file(coverart_file_path) { - Ok(_) => { - if !check_file_existence(coverart_queue_path) { - Ok(()) - } else { - Err(std::io::Error::other(String::from( - "CoverArt file stil exists", - ))) - } - } - Err(err) => Err(std::io::Error::other(err.to_string())), - } - } else { - Err(std::io::Error::other(String::from( - "CoverArt file does not exists", - ))) - } - } - - fn check_file_existence(file_path: &String) -> bool { - let path = std::path::Path::new(file_path); - path.exists() - } -}