use std::sync::Arc; use axum::{routing::{post, get},Router}; use bb8::Pool; use bb8_postgres::PostgresConnectionManager; use tokio_postgres::NoTls; use axum::serve; // // Бэкенд модули // mod launcher; mod minecraft_session; mod web; // // Запуск бэкенд сервера // #[tokio::main] async fn main() { // БД let manager = PostgresConnectionManager::new_from_stringlike( "host=127.0.0.1 port=16458 user=dev dbname=punkcraft", NoTls, ).unwrap(); let pool = Pool::builder() .max_size(16) .build(manager) .await .unwrap(); let shared_pool = Arc::new(pool); // Маршрутизация let app = Router::new() // launcher .route("/punkcraft/session/auth", post(launcher::auth::from_password)) .route("/punkcraft/session/auth/token", post(launcher::auth::from_token)) // minecraft_session .route("/punkcraft/session/join", post(minecraft_session::join)) .route("/punkcraft/session/hasJoined", get(minecraft_session::has_joined)) .route("/punkcraft/session/profile", get(minecraft_session::profile)) .route("/textures/skin/{filename}", get(|path| minecraft_session::serve_texture("assets/session_textures/skin", path))) .route("/textures/cape/{filename}", get(|path| minecraft_session::serve_texture("assets/session_textures/cape", path))) // web .route("/punkcraft/session/register", post(web::register::register)) .with_state(shared_pool); let listener = tokio::net::TcpListener::bind("127.0.0.1:3001").await.unwrap(); serve(listener, app).await.unwrap(); }