diff options
| author | mrw1593 <botahamec@outlook.com> | 2023-05-15 21:42:47 -0400 |
|---|---|---|
| committer | mrw1593 <botahamec@outlook.com> | 2023-05-29 10:46:04 -0400 |
| commit | e38854c7db0fe6f006304d7f638b6aa190fc2d87 (patch) | |
| tree | eb730768a5f9c68f20c3b20a180cb1ab327a2de5 /src/api | |
| parent | 3f0cfb69f2ab1dda4425fe871a6cbf3b4bfb8dc3 (diff) | |
Started on frontend
Diffstat (limited to 'src/api')
| -rw-r--r-- | src/api/liveops.rs | 4 | ||||
| -rw-r--r-- | src/api/ops.rs | 20 | ||||
| -rw-r--r-- | src/api/users.rs | 24 |
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>, |
