From 6e51ece84c9b48dc34cad78fc5404cd6b81f7dcf Mon Sep 17 00:00:00 2001 From: Timo Ley Date: Mon, 10 Jan 2022 19:07:57 +0100 Subject: [PATCH] Return token on upload (required by JM Web) --- src/v1/models.rs | 1 + src/v1/routes.rs | 5 ++--- src/v1/sql.rs | 2 +- src/v1/upload.rs | 1 - 4 files changed, 4 insertions(+), 5 deletions(-) delete mode 100644 src/v1/upload.rs diff --git a/src/v1/models.rs b/src/v1/models.rs index 0c0d46d..ac598de 100644 --- a/src/v1/models.rs +++ b/src/v1/models.rs @@ -82,6 +82,7 @@ pub struct UploadResponse { pub status: i32, pub error: Option, pub files: Option>, + pub token: String, } #[derive(Serialize)] diff --git a/src/v1/routes.rs b/src/v1/routes.rs index 5af1c83..afa59f1 100644 --- a/src/v1/routes.rs +++ b/src/v1/routes.rs @@ -130,7 +130,7 @@ async fn upload( let token = token.ok_or_else(|| APIError::Unauthorized("Missing token".to_string()))?; let category = category.ok_or_else(|| APIError::BadRequest("Missing category".to_string()))?; - let user = User::check_token(token, &db_pool) + let user = User::check_token(&token, &db_pool) .await? .ok_or_else(|| APIError::Forbidden("token not existing".to_string()))?; let total = (user.dayuploads as isize) + (files.len() as isize); @@ -167,12 +167,11 @@ async fn upload( status: 201, error: None, files: Some(links), + token, }), )) } -//TODO: Implement upload endpoint - pub fn routes() -> Router { Router::new() .route("/meme", get(meme)) diff --git a/src/v1/sql.rs b/src/v1/sql.rs index e9c0c73..fff7d9c 100644 --- a/src/v1/sql.rs +++ b/src/v1/sql.rs @@ -157,7 +157,7 @@ impl User { Ok(q) } - pub async fn check_token(token: String, pool: &MySqlPool) -> Result> { + pub async fn check_token(token: &String, pool: &MySqlPool) -> Result> { let q: Option = sqlx::query("SELECT id, name, MD5(token) AS hash, uploads FROM (SELECT id, name, IFNULL(count.uploads, 0) AS uploads FROM users LEFT JOIN (SELECT user, COUNT(*) AS uploads FROM memes WHERE DATE(timestamp) = CURDATE() GROUP BY (user)) AS count ON users.id = count.user) AS users, token WHERE users.id = token.uid AND token = ?") .bind(token) .map(|row: MySqlRow| Self { diff --git a/src/v1/upload.rs b/src/v1/upload.rs deleted file mode 100644 index 8b13789..0000000 --- a/src/v1/upload.rs +++ /dev/null @@ -1 +0,0 @@ -