From 6c16bcd190328443f15029fc3ee2467b6c270eed Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Tue, 28 Jan 2020 22:18:05 -0500 Subject: Beginning of Strava integration --- src/server.rs | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/server.rs diff --git a/src/server.rs b/src/server.rs new file mode 100644 index 0000000..6f05afe --- /dev/null +++ b/src/server.rs @@ -0,0 +1,47 @@ +use rocket::response; +use rocket::State; +use rocket_contrib::templates::Template; +use std::collections::HashMap; + +use crate::Config; +use crate::strava; + +#[get("/")] +fn index() -> Template { + let mut context = HashMap::new(); + context.insert("parent", "layout"); + context.insert("message", "Hello, World"); + Template::render("index", context) +} + +#[get("/link_strava_callback?")] +fn link_strava_callback(config: State, code: String) -> Result { + strava::exchange_token( + &config.client_id, &config.client_secret, &code) + .map(|t| format!("{:#?}", t)) +} + +#[get("/link_strava")] +fn link_strava(config: State) -> response::Redirect { + response::Redirect::to( + format!( + concat!( + "https://www.strava.com/oauth/authorize?", + "client_id={}&", + "response_type=code&", + "redirect_uri={}&", + "approval_prompt=force&", + "scope=read", + ), + config.client_id, + format!("{}/link_strava_callback", config.base_url)) + ) +} + +pub fn start(config: Config) { + rocket::ignite() + .manage(config) + .mount("/", routes![index, link_strava, link_strava_callback]) + .attach(Template::fairing()) + .launch(); +} -- cgit v1.2.3