diff --git a/agdb_server/src/api.rs b/agdb_server/src/api.rs index fccf0bde..1490b68c 100644 --- a/agdb_server/src/api.rs +++ b/agdb_server/src/api.rs @@ -1,13 +1,9 @@ use crate::routes; -use axum::response::IntoResponse; -use reqwest::header::CONTENT_TYPE; -use reqwest::StatusCode; use utoipa::openapi::security::Http; use utoipa::openapi::security::HttpAuthScheme; use utoipa::openapi::security::SecurityScheme; use utoipa::Modify; use utoipa::OpenApi; -use utoipa_rapidoc::RapiDoc; #[derive(OpenApi)] #[openapi( @@ -142,18 +138,6 @@ impl Modify for BearerToken { } } -pub(crate) async fn openapi_json() -> String { - Api::openapi().to_json().unwrap_or_default() -} - -pub(crate) async fn rapidoc() -> impl IntoResponse { - ( - StatusCode::OK, - [(CONTENT_TYPE, "text/html")], - RapiDoc::with_url("/api/v1", "/api/v1/openapi.json", Api::openapi()).to_html(), - ) -} - #[cfg(test)] mod tests { use super::*; diff --git a/agdb_server/src/app.rs b/agdb_server/src/app.rs index 25c2a8ce..ddbf12bf 100644 --- a/agdb_server/src/app.rs +++ b/agdb_server/src/app.rs @@ -1,4 +1,4 @@ -use crate::api; +use crate::api::Api; use crate::cluster::Cluster; use crate::config::Config; use crate::db_pool::DbPool; @@ -13,6 +13,8 @@ use axum::Router; use reqwest::Method; use tokio::sync::broadcast::Sender; use tower_http::cors::CorsLayer; +use utoipa::OpenApi; +use utoipa_rapidoc::RapiDoc; pub(crate) fn app( cluster: Cluster, @@ -178,8 +180,7 @@ pub(crate) fn app( "/user/change_password", routing::put(routes::user::change_password), ) - .route("/user/status", routing::get(routes::user::status)) - .route("/openapi.json", routing::get(api::openapi_json)); + .route("/user/status", routing::get(routes::user::status)); let cors = CorsLayer::new() .allow_methods([Method::GET, Method::POST, Method::PUT, Method::DELETE]) @@ -188,7 +189,7 @@ pub(crate) fn app( let router = Router::new() .nest("/api/v1", api_v1) - .route("/api/v1", routing::get(api::rapidoc)) + .merge(RapiDoc::with_openapi("/api/v1/openapi.json", Api::openapi()).path("/api/v1")) .layer(middleware::from_fn_with_state( state.clone(), forward::forward_to_leader,