diff --git a/src/syncers/download.rs b/src/syncers/download.rs index 5abeba3..052c8ec 100644 --- a/src/syncers/download.rs +++ b/src/syncers/download.rs @@ -15,11 +15,48 @@ impl Default for Download { } impl Download { - pub async fn download_song(&self, token: &models::token::Token) { + pub async fn download_song(&self, token: &models::token::Token, song: &models::song::Song) { + let url = self.retrieve_url(&song); + let access_token = token.bearer_token(); + let client = reqwest::Client::new(); + let response = client.get(&url) + .header(reqwest::header::AUTHORIZATION, &access_token) + .send() + .await + .unwrap(); + + match response.status() { + reqwest::StatusCode::OK => { + // on success, parse our JSON to an APIResponse + /* + let s = response.json::>().await; + match s { + Ok(parsed) => { + println!("\nSuccess!"); + } + Err(_) => println!("Hm, the response didn't match the shape we expected."), + }; + */ + } + reqwest::StatusCode::UNAUTHORIZED => { + println!("Need to grab a new token"); + } + other => { + panic!("Uh oh! Something unexpected happened: {:?}", other); + } + } } - fn retrieve_url(&self) -> String { - let mut url: String = String::new(); + fn retrieve_url(&self, song: &models::song::Song) -> String { + // let mut url: String = String::new(); + let api = &self.api; + let mut url: String = String::from(&api.url); + url += &String::from("api/"); + url += &String::from(&api.version); + url += &String::from("/"); + url += &String::from(&api.endpoint); + url += &String::from("/"); + url += &song.id.unwrap().to_string(); return url; } diff --git a/src/syncers/retrieve_records.rs b/src/syncers/retrieve_records.rs index 538f151..c67dbfb 100644 --- a/src/syncers/retrieve_records.rs +++ b/src/syncers/retrieve_records.rs @@ -59,7 +59,15 @@ impl RetrieveRecords { } fn retrieve_url(&self) -> String { - let mut url: String = String::new(); + // let mut url: String = String::new(); + let api = &self.api; + let mut url: String = String::from(&api.url); + url += &String::from("api/"); + url += &String::from(&api.version); + url += &String::from("/"); + url += &String::from(&api.endpoint); + url += &String::from("/"); + // url += &song.id.unwrap().to_string(); return url; } diff --git a/src/syncers/upload.rs b/src/syncers/upload.rs index b463bc2..cc1c7e9 100644 --- a/src/syncers/upload.rs +++ b/src/syncers/upload.rs @@ -40,7 +40,15 @@ impl Upload { fn retrieve_url(&self, song: &models::song::Song) -> String { - let mut url: String = String::new(); + // let mut url: String = String::new(); + let api = &self.api; + let mut url: String = String::from(&api.url); + url += &String::from("api/"); + url += &String::from(&api.version); + url += &String::from("/"); + url += &String::from(&api.endpoint); + // url += &String::from("/"); + // url += &song.id.unwrap().to_string(); return url; }