summaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
authormrw1593 <botahamec@outlook.com>2023-05-15 21:42:47 -0400
committermrw1593 <botahamec@outlook.com>2023-05-29 10:46:04 -0400
commite38854c7db0fe6f006304d7f638b6aa190fc2d87 (patch)
treeeb730768a5f9c68f20c3b20a180cb1ab327a2de5 /src/api
parent3f0cfb69f2ab1dda4425fe871a6cbf3b4bfb8dc3 (diff)
Started on frontend
Diffstat (limited to 'src/api')
-rw-r--r--src/api/liveops.rs4
-rw-r--r--src/api/ops.rs20
-rw-r--r--src/api/users.rs24
3 files changed, 33 insertions, 15 deletions
diff --git a/src/api/liveops.rs b/src/api/liveops.rs
index 2dda41d..d4bf129 100644
--- a/src/api/liveops.rs
+++ b/src/api/liveops.rs
@@ -1,11 +1,11 @@
use actix_web::{get, web, HttpResponse, Scope};
/// Simple ping
-#[get("ping")]
+#[get("/ping")]
async fn ping() -> HttpResponse {
HttpResponse::Ok().finish()
}
pub fn service() -> Scope {
- web::scope("liveops").service(ping)
+ web::scope("/liveops").service(ping)
}
diff --git a/src/api/ops.rs b/src/api/ops.rs
index 018743c..d947e64 100644
--- a/src/api/ops.rs
+++ b/src/api/ops.rs
@@ -1,9 +1,14 @@
-use actix_web::{http::StatusCode, post, web, HttpResponse, ResponseError, Scope};
+use std::str::FromStr;
+
+use actix_web::{get, http::StatusCode, post, web, HttpResponse, ResponseError, Scope};
use raise::yeet;
use serde::Deserialize;
use sqlx::MySqlPool;
+use tera::Tera;
use thiserror::Error;
+use unic_langid::subtags::Language;
+use crate::resources::{languages, templates};
use crate::services::db;
/// A request to login
@@ -60,6 +65,17 @@ async fn login(
Ok(response)
}
+#[get("/login")]
+async fn login_page(
+ tera: web::Data<Tera>,
+ translations: web::Data<languages::Translations>,
+) -> HttpResponse {
+ // TODO find a better way of doing this
+ let language = Language::from_str("en").unwrap();
+ let page = templates::login_page(&tera, language, translations.get_ref().clone()).unwrap();
+ HttpResponse::Ok().content_type("text/html").body(page)
+}
+
pub fn service() -> Scope {
- web::scope("").service(login)
+ web::scope("").service(login).service(login_page)
}
diff --git a/src/api/users.rs b/src/api/users.rs
index 863d99e..353f8ff 100644
--- a/src/api/users.rs
+++ b/src/api/users.rs
@@ -26,19 +26,21 @@ impl From<User> for UserResponse {
}
}
-#[get("/")]
-async fn search_users(
- web::Query(username): web::Query<Option<Box<str>>>,
- web::Query(limit): web::Query<Option<u32>>,
- web::Query(offset): web::Query<Option<u32>>,
- conn: web::Data<MySqlPool>,
-) -> HttpResponse {
+#[derive(Debug, Clone, Deserialize)]
+struct SearchUsers {
+ username: Option<Box<str>>,
+ limit: Option<u32>,
+ offset: Option<u32>,
+}
+
+#[get("")]
+async fn search_users(params: web::Query<SearchUsers>, conn: web::Data<MySqlPool>) -> HttpResponse {
let conn = conn.get_ref();
- let username = username.unwrap_or_default();
- let offset = offset.unwrap_or_default();
+ let username = params.username.clone().unwrap_or_default();
+ let offset = params.offset.unwrap_or_default();
- let results: Box<[UserResponse]> = if let Some(limit) = limit {
+ let results: Box<[UserResponse]> = if let Some(limit) = params.limit {
db::search_users_limit(conn, &username, offset, limit)
.await
.unwrap()
@@ -129,7 +131,7 @@ impl ResponseError for UsernameTakenError {
}
}
-#[post("/")]
+#[post("")]
async fn create_user(
body: web::Json<UserRequest>,
conn: web::Data<MySqlPool>,