diff --git a/Cargo.lock b/Cargo.lock index 5f7e8b0..553b8e5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1255,7 +1255,7 @@ dependencies = [ [[package]] name = "songparser" -version = "0.2.3" +version = "0.2.4" dependencies = [ "futures", "icarus_envy", diff --git a/Cargo.toml b/Cargo.toml index 0861cc9..cd5e6fe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "songparser" -version = "0.2.3" +version = "0.2.4" edition = "2024" rust-version = "1.88" diff --git a/src/main.rs b/src/main.rs index aef13f4..9362977 100644 --- a/src/main.rs +++ b/src/main.rs @@ -40,7 +40,14 @@ async fn main() -> Result<(), Box> { .await { Ok(_) => { - // TODO: Cleanup files in local filesystem + match cleanup(&song_queue_path, &coverart_queue_path).await { + Ok(_) => { + println!("Successful cleanup"); + } + Err(err) => { + eprintln!("Error: {err:?}"); + } + } } Err(err) => { eprintln!("Error: {err:?}"); @@ -100,6 +107,23 @@ async fn wipe_data_from_queues( } } +async fn cleanup( + song_queue_path: &String, + coverart_queue_path: &String, +) -> Result<(), std::io::Error> { + match the_rest::cleanup::clean_song_queue(song_queue_path) { + Ok(_) => {} + Err(err) => { + eprintln!("Error: Problem cleaning up SongQueue files {err:?}"); + } + } + + match the_rest::cleanup::clean_coverart_queue(coverart_queue_path) { + Ok(_) => Ok(()), + Err(err) => Err(err), + } +} + async fn is_queue_empty( api_url: &String, ) -> Result<(bool, responses::fetch_next_queue_item::SongQueueItem), reqwest::Error> { diff --git a/src/the_rest.rs b/src/the_rest.rs index c806f0f..b3f0b2e 100644 --- a/src/the_rest.rs +++ b/src/the_rest.rs @@ -123,3 +123,54 @@ 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() + } +}