use std::sync::Arc;
use axum::routing::{get, get_service};
use axum::Router;
use tower_http::services::{ServeDir, ServeFile};
use crate::ServerState;
pub mod protocol;
mod socket;
pub fn app() -> Router<Arc<ServerState>> {
let root_spa = ServeFile::new("build/spa.html")
.precompressed_gzip()
.precompressed_br();
let static_files = ServeDir::new("build")
.precompressed_gzip()
.precompressed_br()
.fallback(root_spa);
Router::new()
.nest("/api", backend())
.fallback_service(get_service(static_files))
}
fn backend() -> Router<Arc<ServerState>> {
Router::new().route("/s/:name", get(socket::get_session_ws))
}