1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-04-27 17:07:46 +00:00
kawari/src/bin/kawari-web.rs

87 lines
2.3 KiB
Rust
Raw Normal View History

use std::net::SocketAddr;
use axum::response::{Html, Redirect};
use axum::routing::post;
use axum::{Router, extract::Form, routing::get};
use kawari::config::get_config;
use kawari::setup_default_environment;
use minijinja::context;
2025-03-08 13:27:41 -05:00
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
struct GateStatus {
status: i32,
}
async fn root() -> Html<String> {
let config = get_config();
let environment = setup_default_environment();
let template = environment.get_template("web.html").unwrap();
2025-03-08 13:27:41 -05:00
Html(template.render(context! {}).unwrap())
}
async fn login() -> Html<String> {
let config = get_config();
let environment = setup_default_environment();
let template = environment.get_template("login.html").unwrap();
2025-03-08 13:27:41 -05:00
Html(template.render(context! {}).unwrap())
}
async fn register() -> Html<String> {
let config = get_config();
let environment = setup_default_environment();
let template = environment.get_template("register.html").unwrap();
2025-03-08 13:27:41 -05:00
Html(template.render(context! {}).unwrap())
2024-06-29 14:14:07 -04:00
}
async fn world_status() -> Html<String> {
let config = get_config();
let environment = setup_default_environment();
let template = environment.get_template("worldstatus.html").unwrap();
2025-03-08 13:27:41 -05:00
Html(
template
.render(context! { login_open => config.login_open, worlds_open => config.worlds_open })
.unwrap(),
)
}
#[derive(Deserialize, Debug)]
#[allow(dead_code)]
struct Input {
gate_open: Option<String>,
}
async fn apply(Form(input): Form<Input>) -> Redirect {
tracing::info!("Apply config changes...");
let config = get_config();
2025-03-08 13:27:41 -05:00
serde_json::to_writer(&std::fs::File::create("config.json").unwrap(), &config)
.expect("TODO: panic message");
Redirect::to("/")
}
#[tokio::main]
async fn main() {
tracing_subscriber::fmt::init();
let app = Router::new()
.route("/", get(root))
.route("/login", get(login))
.route("/register", get(register))
2024-06-29 14:14:07 -04:00
.route("/worldstatus", get(world_status))
.route("/apply", post(apply));
let addr = SocketAddr::from(([127, 0, 0, 1], 5801));
tracing::info!("Web server started on {}", addr);
axum::Server::bind(&addr)
.serve(app.into_make_service())
.await
.unwrap();
2025-03-08 13:27:41 -05:00
}