diff options
author | Curly Bryce <curlybryce@protonmail.com> | 2024-07-02 19:48:23 -0600 |
---|---|---|
committer | Curly Bryce <curlybryce@protonmail.com> | 2024-07-02 19:48:23 -0600 |
commit | 8fae88530f6cfdb208f2adf387bb8a7da3fbccb6 (patch) | |
tree | 20cc9e1ef05c11f9904f5741619fdadda4c57ad1 /src | |
parent | f2452bd9d69ff197465303e35a2199de7984474d (diff) | |
download | poko_server-8fae88530f6cfdb208f2adf387bb8a7da3fbccb6.tar.gz poko_server-8fae88530f6cfdb208f2adf387bb8a7da3fbccb6.tar.bz2 poko_server-8fae88530f6cfdb208f2adf387bb8a7da3fbccb6.zip |
http status codes roughly added
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/src/main.rs b/src/main.rs index 859c4d3..9d7dfd0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,7 +2,7 @@ use std::{fs::File, io::Write}; -use rocket::{serde::json::Json, State}; +use rocket::{http::Status, serde::json::Json, State}; use serde::{Deserialize, Serialize}; mod uid; @@ -116,9 +116,12 @@ async fn index() -> &'static str { } #[get("/user/<user>")] -async fn get_user(user: &str, db: &State<Mutex<DB>>) -> Json<Result<User, String>> { +async fn get_user(user: &str, db: &State<Mutex<DB>>) -> (Status, Result<Json<User>, Json<String>>) { let db = db.lock().await; - db.get_user(user).await.into() + match db.get_user(user).await { + Ok(n) => (Status::Ok, Ok(n.into())), + Err(n) => (Status::NotFound, Err(n.into())) + } } fn default_id() -> String { @@ -131,25 +134,40 @@ struct UserForm { id: String, } #[post("/user", data="<data>", format="json")] -async fn new_user(data: Json<UserForm>, db: &State<Mutex<DB>>) -> Json<Result<(), String>> { +async fn new_user(data: Json<UserForm>, db: &State<Mutex<DB>>) -> (Status, Result<(), Json<String>>) { let mut db = db.lock().await; if data.id == "random".to_string() { match db.uid_generator.new_uid() { - Ok(n) => return db.new_user(data.name.clone(), n).await.into(), - Err(n) => return Err(n.clone()).into(), + // Gotten a new UID to make a new user with + Ok(n) => match db.new_user(data.name.clone(), n).await { + // User has been created + Ok(_) => return (Status::Ok, Ok(())), + // Could not create user + Err(n) => return (Status::InternalServerError, Err(n.into())), + }, + // Did not get a new UID + Err(n) => return (Status::InternalServerError, Err(n.clone().into())), } } else { match UID::from(data.id.clone()) { - Err(n) => Err(n).into(), + // Could not make UID from input + Err(n) => (Status::BadRequest, Err(n.into())), + // Made a UID Ok(n) => { if db.uid_generator.is_taken(n) { - return Err("UID is taken".to_string()).into(); + // UID is taken + return (Status::BadRequest, Err("UID is taken".to_string().into())); } else { // UID is not taken match db.uid_generator.add_uid(n) { - Err(n) => return Err(n).into(), - Ok(n) => { - return db.new_user(data.name.clone(), n).await.into(); + // Could not add UID for some reason + Err(n) => return (Status::InternalServerError, Err(n.into())), + // Made + Ok(n) => match db.new_user(data.name.clone(), n).await { + // User has been created + Ok(_) => return (Status::Ok, Ok(())), + // Could not create user + Err(n) => return (Status::InternalServerError, Err(n.into())), }, } } |