elnafo/src/api/doc.rs

59 lines
1.3 KiB
Rust
Raw Normal View History

use utoipa::{
openapi::{
security::{ApiKey, ApiKeyValue, HttpAuthScheme, HttpBuilder, SecurityScheme},
Components,
},
Modify, OpenApi,
};
use super::errors;
use super::user;
#[derive(OpenApi)]
#[openapi(
paths(
super::healthcheck,
user::all,
user::register,
user::remove,
user::login,
user::logout,
user::profile,
user::current,
user::avatar
),
components(schemas(
crate::db::errors::DatabaseError,
user::UserError,
user::schema::NewUser,
user::schema::User,
user::schema::RemoveUser,
user::schema::LoginUser,
user::schema::Avatar,
user::schema::Image,
errors::ApiError
)),
modifiers(&SecurityAddon)
)]
pub struct ApiDoc;
pub struct SecurityAddon;
impl Modify for SecurityAddon {
fn modify(&self, openapi: &mut utoipa::openapi::OpenApi) {
if openapi.components.is_none() {
openapi.components = Some(Components::new());
}
openapi.components.as_mut().unwrap().add_security_scheme(
"token",
SecurityScheme::Http(
HttpBuilder::new()
.scheme(HttpAuthScheme::Bearer)
.bearer_format("JWT")
.build(),
),
);
}
}