forked from jmug/stoatchat
53 lines
1.6 KiB
Rust
53 lines
1.6 KiB
Rust
use utoipa::{Modify, openapi::{Content, OpenApi, Ref, RefOr, ResponseBuilder}};
|
|
|
|
pub struct ErrorAddon;
|
|
|
|
impl Modify for ErrorAddon {
|
|
fn modify(&self, utoipa: &mut OpenApi) {
|
|
let response = ResponseBuilder::new()
|
|
.description("An error occurred")
|
|
.content(
|
|
"application/json",
|
|
Content::new(Some(RefOr::Ref(Ref::from_schema_name("Error")))),
|
|
)
|
|
.build();
|
|
|
|
for path in utoipa.paths.paths.values_mut() {
|
|
if let Some(route) = path.get.as_mut() {
|
|
route
|
|
.responses
|
|
.responses
|
|
.insert("default".to_string(), RefOr::T(response.clone()));
|
|
};
|
|
|
|
if let Some(route) = path.delete.as_mut() {
|
|
route
|
|
.responses
|
|
.responses
|
|
.insert("default".to_string(), RefOr::T(response.clone()));
|
|
};
|
|
|
|
if let Some(route) = path.patch.as_mut() {
|
|
route
|
|
.responses
|
|
.responses
|
|
.insert("default".to_string(), RefOr::T(response.clone()));
|
|
};
|
|
|
|
if let Some(route) = path.post.as_mut() {
|
|
route
|
|
.responses
|
|
.responses
|
|
.insert("default".to_string(), RefOr::T(response.clone()));
|
|
};
|
|
|
|
if let Some(route) = path.put.as_mut() {
|
|
route
|
|
.responses
|
|
.responses
|
|
.insert("default".to_string(), RefOr::T(response.clone()));
|
|
};
|
|
}
|
|
}
|
|
}
|