From 8fae88530f6cfdb208f2adf387bb8a7da3fbccb6 Mon Sep 17 00:00:00 2001 From: Curly Bryce Date: Tue, 2 Jul 2024 19:48:23 -0600 Subject: http status codes roughly added --- src/main.rs | 40 +++++++++++++++++++++++++++++----------- 1 file 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/")] -async fn get_user(user: &str, db: &State>) -> Json> { +async fn get_user(user: &str, db: &State>) -> (Status, Result, Json>) { 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="", format="json")] -async fn new_user(data: Json, db: &State>) -> Json> { +async fn new_user(data: Json, db: &State>) -> (Status, Result<(), Json>) { 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())), }, } } -- cgit v1.2.3