diff options
author | Kjetil Orbekk <kjetil.orbekk@gmail.com> | 2020-01-29 19:15:28 -0500 |
---|---|---|
committer | Kjetil Orbekk <kjetil.orbekk@gmail.com> | 2020-01-29 19:15:28 -0500 |
commit | c8db39dea2cf50dd1fa6c499600e09818b8db44a (patch) | |
tree | b2eb940f9769323cd1d3e1c92bbe3c16d38d9dd6 /src/strava.rs | |
parent | 6c16bcd190328443f15029fc3ee2467b6c270eed (diff) |
Add database support
Diffstat (limited to 'src/strava.rs')
-rw-r--r-- | src/strava.rs | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/src/strava.rs b/src/strava.rs index 490964b..dcd8dc1 100644 --- a/src/strava.rs +++ b/src/strava.rs @@ -1,15 +1,35 @@ use reqwest; +use serde::Deserialize; +use serde::Serialize; + +#[derive(Serialize, Deserialize, Debug)] +pub struct AthleteSummary { + id: i64, + username: String, + firstname: String, + lastname: String, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct Token { + expires_in: i64, + refresh_token: String, + access_token: String, + athlete: AthleteSummary, +} pub fn exchange_token( client_id: &str, client_secret: &str, - code: &str) { + code: &str, +) -> Result<Token, reqwest::Error> { let client = reqwest::blocking::Client::new(); - let params = [("client_id", client_id), - ("client_secret", client_secret), - ("code", code)]; + let params = [ + ("client_id", client_id), + ("client_secret", client_secret), + ("code", code), + ]; let uri = "https://www.strava.com/oauth/token"; let req = client.post(uri).form(¶ms); - let mut res = req.send().unwrap().text(); - println!("{:?}", res); + req.send().map(|r| r.json())? } |