From 552f1ffeb6f7ab9efc4382216751949f94709bea Mon Sep 17 00:00:00 2001 From: Tolmachev Igor Date: Tue, 23 Sep 2025 23:17:34 +0300 Subject: Use IntoResponses derive macro --- src/response/mod.rs | 79 +++++++++++++---------------------------------------- 1 file changed, 19 insertions(+), 60 deletions(-) (limited to 'src/response/mod.rs') diff --git a/src/response/mod.rs b/src/response/mod.rs index 166bc13..d555596 100644 --- a/src/response/mod.rs +++ b/src/response/mod.rs @@ -2,69 +2,28 @@ mod error; mod success; pub use error::ErrorResponse; -use serde_json::json; pub use success::SuccessResponse; -use std::collections::BTreeMap; - -use utoipa::{ - IntoResponses, ToSchema, - openapi::{ - ContentBuilder, RefOr, ResponseBuilder, ResponsesBuilder, example::ExampleBuilder, - response::Response, schema::RefBuilder, - }, -}; +use utoipa::IntoResponses; pub type ApiResult = Result, ErrorResponse>; -pub struct GlobalResponses; - -impl IntoResponses for GlobalResponses { - fn responses() -> BTreeMap> { - ResponsesBuilder::new() - .response( - "400", - ResponseBuilder::new() - .content( - "application/json", - ContentBuilder::new() - .schema(Some( - RefBuilder::new() - .ref_location_from_schema_name(ErrorResponse::name()), - )) - .examples_from_iter([( - "Fail", - ExampleBuilder::new().value(Some(json!(ErrorResponse::fail( - "SomeFailKind", - "some fail message" - )))), - )]) - .build(), - ) - .description("General response for invalid request"), - ) - .response( - "500", - ResponseBuilder::new() - .content( - "application/json", - ContentBuilder::new() - .schema(Some( - RefBuilder::new() - .ref_location_from_schema_name(ErrorResponse::name()), - )) - .examples_from_iter([( - "Error", - ExampleBuilder::new().value(Some(json!(ErrorResponse::error( - "SomeErrorKind", - "some error message" - )))), - )]) - .build(), - ) - .description("General response when a server error occurs"), - ) - .build() - .into() - } +#[derive(IntoResponses)] +pub enum GlobalResponses { + #[response( + status = 400, + description = "General response for invalid request", + examples( + ("Fail" = (value = json!(ErrorResponse::fail("SomeFailKind", "some fail message")))) + ) + )] + Fail(ErrorResponse), + #[response( + status = 500, + description = "General response when a server error occurs", + examples( + ("Error" = (value = json!(ErrorResponse::error("SomeErrorKind", "some error message")))) + ) + )] + Error(ErrorResponse), } -- cgit v1.2.3