Initial commit: FunConnect project with server, relay, client and admin panel
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
75
server/src/api/mod.rs
Normal file
75
server/src/api/mod.rs
Normal file
@@ -0,0 +1,75 @@
|
||||
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))
|
||||
.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))
|
||||
}
|
||||
Reference in New Issue
Block a user