Files
Projet_48h/backend/src/main.rs

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)
}