summaryrefslogtreecommitdiff
path: root/src/strava.rs
diff options
context:
space:
mode:
authorKjetil Orbekk <kjetil.orbekk@gmail.com>2020-01-29 19:15:28 -0500
committerKjetil Orbekk <kjetil.orbekk@gmail.com>2020-01-29 19:15:28 -0500
commitc8db39dea2cf50dd1fa6c499600e09818b8db44a (patch)
treeb2eb940f9769323cd1d3e1c92bbe3c16d38d9dd6 /src/strava.rs
parent6c16bcd190328443f15029fc3ee2467b6c270eed (diff)
Add database support
Diffstat (limited to 'src/strava.rs')
-rw-r--r--src/strava.rs32
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(&params);
- let mut res = req.send().unwrap().text();
- println!("{:?}", res);
+ req.send().map(|r| r.json())?
}