From 32e99b155c656ec4b974f8ce8c900537b459c046 Mon Sep 17 00:00:00 2001 From: Xiretza Date: Sat, 10 Feb 2024 10:44:31 +0000 Subject: [PATCH] Implement dummy /api_login --- src/server.rs | 49 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/src/server.rs b/src/server.rs index cc2a5e5..1e69e1c 100644 --- a/src/server.rs +++ b/src/server.rs @@ -1,12 +1,51 @@ -use axum::{routing::get, Router}; -use color_eyre::Result; -use tracing::instrument; +use axum::{ + extract::Query, + response::ErrorResponse, + routing::{get, post}, + Form, Json, Router, +}; +use serde::{Deserialize, Serialize}; +use tracing::{event, instrument, Level}; + +use crate::auth::Password; #[instrument] -pub async fn run() -> Result<()> { - let app = Router::new().route("/tls-check/success", get(|| async { "OK" })); +pub async fn run() -> color_eyre::Result<()> { + let app = Router::new() + .route("/tls-check/success", get(|| async { "OK" })) + .route("/api-login", post(api_login)); let listener = tokio::net::TcpListener::bind("[::]:8080").await?; axum::serve(listener, app).await?; Ok(()) } + +#[derive(Debug, Clone, PartialEq, Eq, Deserialize)] +struct ApiVersion { + api_version: String, +} + +#[derive(Debug, Clone, Deserialize)] +struct LoginRequest { + username: String, + password: Password, +} + +#[derive(Debug, Clone, Serialize)] +struct LoginResponse { + username: String, + token: String, +} + +#[instrument] +async fn api_login( + Query(ApiVersion { api_version }): Query, + Form(LoginRequest { username, password }): Form, +) -> Result, ErrorResponse> { + event!(Level::WARN, "Creating dummy token"); + + Ok(Json(LoginResponse { + username, + token: "invalid".to_string(), + })) +}