pub mod admin; pub mod auth; pub mod download; pub mod friends; pub mod health; pub mod relay_nodes; pub mod rooms; pub mod users; use axum::{ routing::{delete, get, post, put}, Router, }; use std::sync::Arc; use crate::AppState; use crate::signaling::handler::ws_handler; pub fn router(_state: Arc) -> Router> { Router::new() // Auth .route("/auth/register", post(auth::register)) .route("/auth/login", post(auth::login)) .route("/auth/refresh", post(auth::refresh)) .route("/auth/logout", post(auth::logout)) .route("/auth/me", get(users::get_me)) // Friends .route("/friends", get(friends::list_friends)) .route("/friends/requests", get(friends::list_requests)) .route("/friends/request", post(friends::send_request)) .route("/friends/:id/accept", put(friends::accept_request)) .route("/friends/:id", delete(friends::remove_friend)) // Rooms .route("/rooms", get(rooms::list_rooms).post(rooms::create_room)) .route("/rooms/:id", get(rooms::get_room).put(rooms::update_room).delete(rooms::close_room)) .route("/rooms/:id/members", get(rooms::get_room_members)) .route("/rooms/:id/members/:user_id", delete(rooms::kick_member)) .route("/rooms/:id/host-info", get(rooms::get_host_info).post(rooms::update_host_info)) .route("/rooms/:id/join", post(rooms::join_room)) .route("/rooms/:id/leave", post(rooms::leave_room)) .route("/rooms/:id/invite/:user_id", post(rooms::invite_to_room)) // Users .route("/users/search", get(users::search_users)) // Relay nodes .route("/relay/nodes", get(relay_nodes::list_nodes).post(relay_nodes::add_node)) .route("/relay/nodes/:id", delete(relay_nodes::remove_node)) .route("/relay/nodes/:id/ping", post(relay_nodes::report_ping)) // Admin .route("/admin/login", post(admin::admin_login)) .route("/admin/stats", get(admin::get_stats)) .route("/admin/users", get(admin::list_users)) .route("/admin/users/:id/ban", post(admin::ban_user)) .route("/admin/users/:id/unban", post(admin::unban_user)) .route("/admin/rooms", get(admin::list_admin_rooms)) .route("/admin/rooms/:id", delete(admin::delete_room)) .route("/admin/config", get(admin::get_config).put(admin::update_config)) .route("/admin/logs", get(admin::get_logs)) .route("/admin/builds", get(download::list_builds)) .route("/admin/builds/trigger", post(download::trigger_build)) // Download .route("/client-config", get(download::get_client_config)) .route("/download/:filename", get(download::download_file)) // WebSocket signaling .route("/ws", get(ws_handler)) // Health checks .route("/health", get(health::health_check)) .route("/health/detailed", get(health::detailed_health_check)) .route("/health/ready", get(health::ready_check)) .route("/health/live", get(health::live_check)) } pub fn download_router() -> Router> { Router::new() .route("/", get(download::download_page)) }