From 420ba9862285335e4db7d12f1753e05b01af9d2d Mon Sep 17 00:00:00 2001 From: kdeng00 Date: Fri, 13 Jun 2025 21:14:07 -0400 Subject: [PATCH 1/3] Code cleanup --- src/main.rs | 165 +++++++++++++++++++++++++++------------------------- 1 file changed, 87 insertions(+), 78 deletions(-) diff --git a/src/main.rs b/src/main.rs index 58c76a0..fdb47fb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,87 +9,21 @@ async fn main() -> Result<(), Box> { loop { println!("Base URL: {}", app_base_url); - match api::fetch_next_queue_item(&app_base_url).await { - Ok(response) => { - match response - .json::() - .await - { - Ok(song_queue_item) => { - if !song_queue_item.data.is_empty() { - println!("Song queue item: {:?}", song_queue_item); - let song_queue_id = song_queue_item.data[0].id; + match is_queue_empty(&app_base_url).await { + Ok((empty, song_queue_item)) => { + if !empty { + println!("Queue is not empty"); + println!("SongQueueItem: {:?}", song_queue_item); + let song_queue_id = song_queue_item.data[0].id; - println!("Fetching song queue data"); - match api::fetch_song_queue_data::get_data( - &app_base_url, - &song_queue_id, - ) - .await - { - Ok(response) => { - // Process data here... - let all_bytes = - api::fetch_song_queue_data::response::parse_response( - response, - ) - .await?; - - let (directory, filename) = - generate_song_queue_dir_and_filename().await; - let save_path = - save_song_to_fs(&directory, &filename, &all_bytes).await; - - println!("Saved at: {:?}", save_path); - - match api::get_metadata_queue::get( - &app_base_url, - &song_queue_id, - ) - .await - { - Ok(response) => { - match response.json::().await { - Ok(response) => { - let id = &response.data[0].id; - let metadata = &response.data[0].metadata; - let created_at = &response.data[0].created_at; - println!("Id: {:?}", id); - println!("Metadata: {:?}", metadata); - println!("Created at: {:?}", created_at); - // TODO: Get queued coverart - // TODO: Get queued coverart's data - // TODO: Apply metadata to the queued song (modifying file) - // TODO: Update the queued song with the updated queued song - // TODO: Create song - // TODO: Create coverart - // TODO: Wipe data from queued song - // TODO: Wipe data from queued coverart - } - Err(err) => { - eprintln!("Error: {:?}", err); - } - } - } - Err(err) => { - eprintln!("Error: {:?}", err); - } - } - } - Err(err) => { - eprintln!("Error fetching song queue data: {:?}", err); - } - } - } else { - println!("No data to fetch"); - } - } - Err(err) => { - eprintln!("Error: {:?}", err); - } + process_song(&app_base_url, &song_queue_id); + } else { + println!("Queue is empty"); } } - Err(e) => eprintln!("API call failed: {}", e), + Err(err) => { + eprintln!("Error: {:?}", err); + } } println!("Sleeping"); @@ -97,6 +31,81 @@ async fn main() -> Result<(), Box> { } } +async fn is_queue_empty( + api_url: &String, +) -> Result<(bool, responses::fetch_next_queue_item::SongQueueItem), reqwest::Error> { + match api::fetch_next_queue_item(api_url).await { + Ok(response) => { + match response + .json::() + .await + { + Ok(response) => { + if response.data.is_empty() { + Ok((true, response)) + } else { + Ok((false, response)) + } + } + Err(err) => Err(err), + } + } + Err(err) => Err(err), + } +} + +async fn process_song(api_url: &String, song_queue_id: &uuid::Uuid) { + match api::fetch_song_queue_data::get_data(&api_url, &song_queue_id).await { + Ok(response) => { + // Process data here... + match api::fetch_song_queue_data::response::parse_response(response).await { + Ok(all_bytes) => { + let (directory, filename) = generate_song_queue_dir_and_filename().await; + let save_path = save_song_to_fs(&directory, &filename, &all_bytes).await; + + println!("Saved at: {:?}", save_path); + + match api::get_metadata_queue::get(&api_url, &song_queue_id).await { + Ok(response) => { + match response + .json::() + .await + { + Ok(response) => { + let id = &response.data[0].id; + let metadata = &response.data[0].metadata; + let created_at = &response.data[0].created_at; + println!("Id: {:?}", id); + println!("Metadata: {:?}", metadata); + println!("Created at: {:?}", created_at); + // TODO: Get queued coverart + // TODO: Get queued coverart's data + // TODO: Apply metadata to the queued song (modifying file) + // TODO: Update the queued song with the updated queued song + // TODO: Create song + // TODO: Create coverart + // TODO: Wipe data from queued song + // TODO: Wipe data from queued coverart + } + Err(err) => { + eprintln!("Error: {:?}", err); + } + } + } + Err(err) => { + eprintln!("Error: {:?}", err); + } + } + } + Err(err) => {} + } + } + Err(err) => { + eprintln!("Error fetching song queue data: {:?}", err); + } + } +} + // 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(); -- 2.43.0 From cfe42546429b3e5ee5cf175877c16fd18e778fe9 Mon Sep 17 00:00:00 2001 From: kdeng00 Date: Fri, 13 Jun 2025 21:19:06 -0400 Subject: [PATCH 2/3] Some warning fixes --- src/main.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index fdb47fb..16e9f6f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,7 +16,8 @@ async fn main() -> Result<(), Box> { println!("SongQueueItem: {:?}", song_queue_item); let song_queue_id = song_queue_item.data[0].id; - process_song(&app_base_url, &song_queue_id); + // TODO: Do something with the result later + let _ = process_song(&app_base_url, &song_queue_id).await; } else { println!("Queue is empty"); } @@ -54,8 +55,8 @@ async fn is_queue_empty( } } -async fn process_song(api_url: &String, song_queue_id: &uuid::Uuid) { - match api::fetch_song_queue_data::get_data(&api_url, &song_queue_id).await { +async fn process_song(api_url: &String, song_queue_id: &uuid::Uuid) -> Result<(), reqwest::Error> { + match api::fetch_song_queue_data::get_data(api_url, song_queue_id).await { Ok(response) => { // Process data here... match api::fetch_song_queue_data::response::parse_response(response).await { @@ -65,7 +66,7 @@ async fn process_song(api_url: &String, song_queue_id: &uuid::Uuid) { println!("Saved at: {:?}", save_path); - match api::get_metadata_queue::get(&api_url, &song_queue_id).await { + match api::get_metadata_queue::get(api_url, song_queue_id).await { Ok(response) => { match response .json::() @@ -86,22 +87,28 @@ async fn process_song(api_url: &String, song_queue_id: &uuid::Uuid) { // TODO: Create coverart // TODO: Wipe data from queued song // TODO: Wipe data from queued coverart + Ok(()) } Err(err) => { eprintln!("Error: {:?}", err); + Err(err) } } } Err(err) => { eprintln!("Error: {:?}", err); + Err(err) } } } - Err(err) => {} + Err(err) => { + Err(err) + } } } Err(err) => { eprintln!("Error fetching song queue data: {:?}", err); + Err(err) } } } -- 2.43.0 From d95571a77b1ae982c12c32c3bd4eb62a3dacc533 Mon Sep 17 00:00:00 2001 From: kdeng00 Date: Fri, 13 Jun 2025 21:26:37 -0400 Subject: [PATCH 3/3] Simplyfing code and formatting --- src/main.rs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index 16e9f6f..65b9af7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,7 +23,7 @@ async fn main() -> Result<(), Box> { } } Err(err) => { - eprintln!("Error: {:?}", err); + eprintln!("Error checking if queue is empty: {:?}", err); } } @@ -101,15 +101,10 @@ async fn process_song(api_url: &String, song_queue_id: &uuid::Uuid) -> Result<() } } } - Err(err) => { - Err(err) - } + Err(err) => Err(err), } } - Err(err) => { - eprintln!("Error fetching song queue data: {:?}", err); - Err(err) - } + Err(err) => Err(err), } } -- 2.43.0