60 lines
1.8 KiB
Rust
60 lines
1.8 KiB
Rust
use axum::{Router, response::Html, routing::get};
|
|
use std::net::SocketAddr;
|
|
use std::path::Path;
|
|
use tokio::fs::File;
|
|
use tokio::io::{self, AsyncReadExt};
|
|
use tower_http::services::ServeDir;
|
|
mod user;
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
let db = user::DataBase::open(String::from("user"));
|
|
db.create_table("users", "name TEXT, level TEXT, password TEXT");
|
|
let app = Router::new()
|
|
.route("/", get(handler))
|
|
.route("/game", get(game))
|
|
.nest_service("/web/assets", ServeDir::new("../web/assets"));
|
|
|
|
let addr = SocketAddr::from(([0, 0, 0, 0], 3500));
|
|
println!("listening on {}", addr);
|
|
axum_server::bind(addr)
|
|
.serve(app.into_make_service())
|
|
.await
|
|
.unwrap();
|
|
}
|
|
|
|
async fn handler() -> Html<String> {
|
|
let html_content = read_html_from_file("../web/templates/view/index.html")
|
|
.await
|
|
.unwrap_or_else(|_| "<h1>Error loading HTML file</h1>".to_string());
|
|
Html(html_content)
|
|
}
|
|
|
|
async fn game() -> Html<String> {
|
|
let html_content = read_html_from_file("../web/templates/view/game.html")
|
|
.await
|
|
.unwrap_or_else(|_| "<h1>Error loading HTML file</h1>".to_string());
|
|
Html(html_content)
|
|
}
|
|
|
|
async fn register() -> Html<String> {
|
|
let html_content = read_html_from_file("../web/templates/view/register.html")
|
|
.await
|
|
.unwrap_or_else(|_| "<h1>Error loading HTML file</h1>".to_string());
|
|
Html(html_content)
|
|
}
|
|
|
|
async fn login() -> Html<String> {
|
|
let html_content = read_html_from_file("../web/templates/view/login.html")
|
|
.await
|
|
.unwrap_or_else(|_| "<h1>Error loading HTML file</h1>".to_string());
|
|
Html(html_content)
|
|
}
|
|
|
|
async fn read_html_from_file<P: AsRef<Path>>(path: P) -> io::Result<String> {
|
|
let mut file = File::open(path).await?;
|
|
let mut contents = String::new();
|
|
file.read_to_string(&mut contents).await?;
|
|
Ok(contents)
|
|
}
|