paperclip_core/v3/models/
request_body.rs1use super::{invalid_referenceor, non_body_parameter_to_v3_parameter, v2, Either};
2
3impl From<v2::DefaultParameterRaw>
4 for Either<openapiv3::Parameter, Either<openapiv3::RequestBody, Option<openapiv3::Schema>>>
5{
6 fn from(v2: v2::DefaultParameterRaw) -> Self {
7 let parameter_data = |schema: Option<openapiv3::Schema>| openapiv3::ParameterData {
8 name: v2.name.clone(),
9 description: v2.description.clone(),
10 required: v2.required,
11 deprecated: None,
12 format: match &schema {
13 Some(schema) => openapiv3::ParameterSchemaOrContent::Schema(
14 openapiv3::ReferenceOr::Item(schema.clone()),
15 ),
16 None => openapiv3::ParameterSchemaOrContent::Schema(invalid_referenceor(format!(
17 "No Schema found: {:?}",
18 v2
19 ))),
20 },
21 example: None,
22 examples: Default::default(),
23 explode: None,
24 extensions: Default::default(),
25 };
26
27 match v2.in_ {
28 v2::ParameterIn::Query => Either::Left(openapiv3::Parameter::Query {
29 parameter_data: parameter_data(non_body_parameter_to_v3_parameter(false, &v2)),
30 allow_reserved: false,
31 style: Default::default(),
32 allow_empty_value: None,
33 }),
34 v2::ParameterIn::Header => Either::Left(openapiv3::Parameter::Header {
35 parameter_data: parameter_data(non_body_parameter_to_v3_parameter(false, &v2)),
36 style: Default::default(),
37 }),
38 v2::ParameterIn::Path => Either::Left(openapiv3::Parameter::Path {
39 parameter_data: parameter_data(non_body_parameter_to_v3_parameter(false, &v2)),
40 style: Default::default(),
41 }),
42 v2::ParameterIn::FormData => {
43 Either::Right(Either::Right(non_body_parameter_to_v3_parameter(true, &v2)))
44 }
45 v2::ParameterIn::Body => Either::Right(Either::Left(openapiv3::RequestBody {
46 description: v2.description,
47 content: {
48 let media = openapiv3::MediaType {
49 schema: v2.schema.map(|s| s.into()),
50 ..Default::default()
51 };
52 let mut map = openapiv3::RequestBody::default().content;
53 map.insert(v2::SpecFormat::Json.mime().0.to_string(), media);
54 map
55 },
56 required: v2.required,
57 extensions: Default::default(),
58 })),
59 }
60 }
61}