Files
oxspeak_server/src/routes/mod.rs
T
2026-09-13 20:52:07 +02:00

57 lines
1.7 KiB
Rust

use crate::http::OxRouter;
use crate::http::middleware;
use axum::{Router, middleware as axum_middleware};
use utoipa::OpenApi;
use utoipa_swagger_ui::SwaggerUi;
pub mod attachment;
pub mod auth;
pub mod category;
pub mod channel;
pub mod conversation;
pub mod core;
pub mod emoji;
pub mod gateway;
pub mod message;
pub mod openapi;
pub mod role;
pub mod rtc;
pub mod server;
pub mod server_item_order;
pub mod user;
pub mod voice;
pub fn router() -> OxRouter {
// Routes nécessitant une authentification
let secure_routes = Router::new()
.merge(server::routes::router())
.merge(server_item_order::routes::router())
.merge(category::routes::router())
.merge(channel::routes::router())
.merge(conversation::routes::router())
.merge(role::routes::router())
.merge(message::routes::router())
.merge(attachment::routes::secure_router())
.merge(user::routes::router())
.merge(emoji::routes::router())
.layer(axum_middleware::from_fn(middleware::require_auth));
// Routes publiques (ou gérant leur propre auth)
let api_routes = Router::new()
.merge(secure_routes)
.merge(auth::routes::router())
.merge(core::routes::router());
let public_attachment_routes = attachment::routes::public_router();
let ws_routes = Router::new()
.merge(gateway::routes::router())
.merge(voice::routes::router())
.merge(rtc::routes::router());
Router::new()
.nest("/api", api_routes)
.nest("/api", public_attachment_routes)
.nest("/ws", ws_routes)
.merge(SwaggerUi::new("/swagger").url("/api-docs/openapi.json", openapi::ApiDoc::openapi()))
}