From a646b465246f737ea371e2acb30830180078e61d Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Sat, 1 Feb 2020 09:30:36 -0500 Subject: Trigger strava import from HTTP server --- src/server.rs | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'src/server.rs') diff --git a/src/server.rs b/src/server.rs index ad163e1..994d059 100644 --- a/src/server.rs +++ b/src/server.rs @@ -15,6 +15,8 @@ use rocket::State; use rocket_contrib::templates::Template; use std::collections::HashMap; use threadpool::ThreadPool; +use std::sync::Mutex; +use std::sync::mpsc::Sender; use crate::db; use crate::error::Error; @@ -40,7 +42,6 @@ impl<'a, 'r> FromRequest<'a, 'r> for LoggedInUser { type Error = Error; fn from_request(request: &'a Request<'r>) -> request::Outcome { - println!("trying to get logged in user"); let conn = request .guard::() .map_failure(|(s, ())| (s, Error::InternalError))?; @@ -51,15 +52,17 @@ impl<'a, 'r> FromRequest<'a, 'r> for LoggedInUser { .get_private("user") .map(|cookie| cookie.value().to_string()) .ok_or(Error::NotFound)?; - println!("username: {:?}", username); db::get_user(&conn, &username)?; Ok(LoggedInUser { username: username }) })(); - println!("user: {:#?}", user); + debug!("user: {:?}", user); use request::Outcome; match user { - Ok(user) => Outcome::Success(user), + Ok(user) => { + info!("Credentials: {:?}", user); + Outcome::Success(user) + }, Err(Error::NotFound) => Outcome::Forward(()), Err(e) => Outcome::Failure((Status::InternalServerError, e)), } @@ -132,6 +135,16 @@ fn link_strava_callback( Ok(result) } +#[get("/import_strava")] +fn import_strava( + conn: Db, + tx: State>>, + user: LoggedInUser) -> Result<(), Error> { + let user = db::get_user(&*conn, &user.username)?; + tx.lock().expect("FIX").send(importer::Command::ImportStravaUser(user)); + Ok(()) +} + #[get("/link_strava")] fn link_strava(params: State) -> Redirect { Redirect::to(format!( @@ -169,17 +182,16 @@ pub fn start(conn: diesel::PgConnection, db_url: &str, base_url: &str) { let importer_pool = ThreadPool::with_name("import".to_string(), importer::WORKERS); let tx = importer::run(importer_pool.clone()); - for i in 0..100 { - tx.send(importer::Command::Quit).expect("send"); - } rocket::custom(config) .manage(params) + .manage(Mutex::new(tx)) .mount( "/", routes![ index, login, + import_strava, login_submit, link_strava, link_strava_callback -- cgit v1.2.3