diff options
author | Kjetil Orbekk <kjetil.orbekk@gmail.com> | 2020-02-01 09:30:36 -0500 |
---|---|---|
committer | Kjetil Orbekk <kjetil.orbekk@gmail.com> | 2020-02-01 09:30:36 -0500 |
commit | a646b465246f737ea371e2acb30830180078e61d (patch) | |
tree | 1ee6148c32a0233ad9ccc4ac172c76ee7d5f6941 | |
parent | aa12104e4c5572a5806bf1e6b8dd27d72705ab84 (diff) |
Trigger strava import from HTTP server
-rw-r--r-- | src/models.rs | 2 | ||||
-rw-r--r-- | src/server.rs | 26 |
2 files changed, 20 insertions, 8 deletions
diff --git a/src/models.rs b/src/models.rs index 3837b3d..ce3dd19 100644 --- a/src/models.rs +++ b/src/models.rs @@ -31,7 +31,7 @@ impl fmt::Debug for User { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!( f, - "User {{ username: {}, password: <redacted> }}", + "User {{ username: {}, password: <secret> }}", self.username ) } 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<Self, Self::Error> { - println!("trying to get logged in user"); let conn = request .guard::<Db>() .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<Mutex<Sender<importer::Command>>>, + 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<Params>) -> 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 |