aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCurly Bryce <curlybryce@protonmail.com>2024-07-02 19:48:23 -0600
committerCurly Bryce <curlybryce@protonmail.com>2024-07-02 19:48:23 -0600
commit8fae88530f6cfdb208f2adf387bb8a7da3fbccb6 (patch)
tree20cc9e1ef05c11f9904f5741619fdadda4c57ad1
parentf2452bd9d69ff197465303e35a2199de7984474d (diff)
downloadpoko_server-8fae88530f6cfdb208f2adf387bb8a7da3fbccb6.tar.gz
poko_server-8fae88530f6cfdb208f2adf387bb8a7da3fbccb6.tar.bz2
poko_server-8fae88530f6cfdb208f2adf387bb8a7da3fbccb6.zip
http status codes roughly added
-rw-r--r--src/main.rs40
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())),
},
}
}