2026-02-24 20:56:36 +08:00
|
|
|
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<AppState>) -> Router<Arc<AppState>> {
|
|
|
|
|
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))
|
2026-02-26 21:22:39 +08:00
|
|
|
.route("/download/list", get(download::list_download_files))
|
2026-02-24 20:56:36 +08:00
|
|
|
.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<Arc<AppState>> {
|
|
|
|
|
Router::new()
|
|
|
|
|
.route("/", get(download::download_page))
|
|
|
|
|
}
|