32 lines
969 B
Rust
32 lines
969 B
Rust
pub mod chat;
|
|
pub mod models;
|
|
|
|
use crate::docs::ApiDoc;
|
|
use crate::middlewares::auth::auth_middleware;
|
|
use crate::state::app_state::AppState;
|
|
use axum::{Json, Router, middleware, routing::get, routing::post};
|
|
use utoipa::OpenApi;
|
|
|
|
async fn openapi_json() -> Json<utoipa::openapi::OpenApi> {
|
|
Json(ApiDoc::openapi())
|
|
}
|
|
|
|
fn public_router() -> Router<AppState> {
|
|
Router::new().route("/docs.json", get(openapi_json))
|
|
}
|
|
|
|
pub fn protected_router() -> Router<AppState> {
|
|
Router::new()
|
|
.route("/models", get(models::list_models))
|
|
.route("/completions", post(chat::completions))
|
|
.route("/chat/completions", post(chat::chat_completions))
|
|
.route("/models/{model}/load", post(models::load_model))
|
|
.route("/models/{model}/unload", post(models::unload_model))
|
|
}
|
|
|
|
pub fn router() -> Router<AppState> {
|
|
Router::new()
|
|
.merge(public_router())
|
|
.merge(protected_router().layer(middleware::from_fn(auth_middleware)))
|
|
}
|