59 lines
1.3 KiB
Rust
59 lines
1.3 KiB
Rust
|
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(),
|
||
|
),
|
||
|
);
|
||
|
}
|
||
|
}
|