summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Orbekk <kjetil.orbekk@gmail.com>2020-02-01 09:30:36 -0500
committerKjetil Orbekk <kjetil.orbekk@gmail.com>2020-02-01 09:30:36 -0500
commita646b465246f737ea371e2acb30830180078e61d (patch)
tree1ee6148c32a0233ad9ccc4ac172c76ee7d5f6941
parentaa12104e4c5572a5806bf1e6b8dd27d72705ab84 (diff)
Trigger strava import from HTTP server
-rw-r--r--src/models.rs2
-rw-r--r--src/server.rs26
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