@@ -117,17 +117,16 @@ where
117117 // This match statement is duplicated below in `parse_operation_id()`.
118118 // Please update both places if changing how this code is autogenerated.
119119 match &method {
120- {{#apiInfo} }{ {#apis} }{ {#operations} }{ {#operation} }
120+ {{#apiInfo} }{ {#apis} }{ {#operations} }{ {#operation} }
121121 // { {{operationId} }} - { {{httpMethod} }} { {{path} }}
122122 &hyper::Method::{ {vendorExtensions.HttpMethod} } if path.matched(paths::ID_{ {vendorExtensions.PATH_ID} }) => {
123- {{#hasAuthMethods} }
123+ {{#hasAuthMethods} }
124124 let authorization = match (&context as &dyn Has<Option <Authorization >>).get() {
125125 &Some(ref authorization) => authorization,
126126 &None => return Ok(Response::builder().status(StatusCode::FORBIDDEN).body(hyper::Body::from(" Unauthenticated" )).unwrap()),
127127 } ;
128128
129- { {#authMethods} }
130- { {#isOAuth} }
129+ { {#authMethods} }{ {#isOAuth} }
131130 // Authorization
132131 if let Scopes::Some(ref scopes) = authorization.scopes {
133132 let required_scopes: BTreeSet< String> = vec! [
@@ -147,86 +146,63 @@ where
147146 ;
148147 }
149148 }
150- { {/isOAuth} }
151- { {/authMethods} }
152- { {/hasAuthMethods} }
153- { {#vendorExtensions} }
154- { {#consumesMultipart} }
149+ { {/isOAuth} }{ {/authMethods} }{ {/hasAuthMethods} }{ {#vendorExtensions} }{ {#consumesMultipart} }
155150 let boundary = match multipart_boundary(&headers) {
156151 Some(boundary) => boundary.to_string(),
157152 None => return Ok(Response::builder().status(StatusCode::BAD_REQUEST).body(hyper::Body::from(" Couldn't find valid multipart body" )).unwrap()),
158153 } ;
159- { {/consumesMultipart} }
160- { {#hasPathParams} }
154+ { {/consumesMultipart} }{ {#hasPathParams} }
161155 // Path parameters
162156 let path = uri.path().to_string();
163157 let path_params = paths::REGEX_{ {{PATH_ID} }}
164158 .captures(&path)
165159 .unwrap_or_else(||
166160 panic!("Path { } matched RE { {{PATH_ID} }} in set but failed match against \"{ } \"", path, paths::REGEX_{ {{PATH_ID} }}.as_str())
167161 );
168- { {/hasPathParams} }
169- { {/vendorExtensions} }
170- { {#pathParams} }
162+ { {/hasPathParams} }{ {/vendorExtensions} }{ {#pathParams} }
171163 let param_{ {{paramName} }} = match percent_encoding::percent_decode(path_params["{ {{paramName} }}"].as_bytes()).decode_utf8() {
172164 Ok(param_{{{paramName} }}) => match param_{ {{paramName} }}.parse::<{ {{dataType} }}>() {
173165 Ok(param_{{{paramName} }}) => param_{ {{paramName} }},
174166 Err(e) => return Ok(Response::builder().status(StatusCode::BAD_REQUEST).body(hyper::Body::from(format!("Couldn't parse path parameter { {{baseName} }}: { :?} ", e))).unwrap()),
175167 },
176168 Err(_) => return Ok(Response::builder().status(StatusCode::BAD_REQUEST).body(hyper::Body::from(format!("Couldn't percent-decode path parameter as UTF-8: { } ", &path_params["{ {{baseName} }}"]))).unwrap())
177169 };
178- { {/pathParams} }
179- { {#headerParams} }
180- { {#-first} }
170+ { {/pathParams} }{ {#headerParams} }{ {#-first} }
181171 // Header parameters
182- { {/-first} }
183- { {#required} }
172+ { {/-first} }{ {#required} }
184173 let param_{ {{paramName} }} = match headers.typed_get(Request{ {vendorExtensions.typeName} }) {
185174 Some(param_{{{paramName} }}) => param_{ {{paramName} }}.0.clone(),
186175 None => return Ok(Response::builder().status(StatusCode::BAD_REQUEST).body(hyper::Body::from("Missing or invalid required header { {{baseName} }}"))).unwrap()),
187176 };
188- { {/required} }
189- { {^required} }
177+ { {/required} }{ {^required} }
190178 let param_{ {{paramName} }} = headers.typed_get::<Request { { vendorExtensions.typeName} } >().map(|header| header.0.clone());
191- { {/required} }
192- { {/headerParams} }
193- { {#queryParams} }
194- { {#-first} }
179+ { {/required} }{ {/headerParams} }{ {#queryParams} }{ {#-first} }
195180 // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response)
196181 let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()).collect::<Vec <_ >>();
197- { {/-first} }
182+ { {/-first} }
198183 let param_{ {{paramName} }} = query_params.iter().filter(|e| e.0 == "{ {{baseName} }}").map(|e| e.1.to_owned())
199- { {#isListContainer} }
184+ { {#isListContainer} }
200185 .filter_map(|param_{ {{paramName} }}| param_{ {{paramName} }}.parse::<{ {{baseType} }}>().ok())
201186 .collect::<Vec <_ >>();
202- { {^required} }
187+ { {^required} }
203188 let param_{ {{paramName} }} = if !param_{ {{paramName} }}.is_empty() {
204189 Some(param_{{{paramName} }})
205190 } else {
206191 None
207192 } ;
208- { {/required} }
209- { {/isListContainer} }
210- { {^isListContainer} }
193+ { {/required} }{ {/isListContainer} }{ {^isListContainer} }
211194 .nth(0);
212- { {#required} }
195+ { {#required} }
213196 let param_{ {{paramName} }} = match param_{ {{paramName} }} {
214197 Some(param_{{{paramName} }}) => match param_{ {{paramName} }}.parse::<{ {{dataType} }}>() {
215198 Ok(param_{{{paramName} }}) => param_{ {{paramName} }},
216199 Err(e) => return Ok(Response::builder().status(StatusCode::BAD_REQUEST).body(hyper::Body::from(format!("Couldn't parse query parameter { {{baseName} }} - doesn't match schema: { } ", e))).unwrap()),
217200 },
218201 None => return Ok(Response::builder().status(StatusCode::BAD_REQUEST).body(hyper::Body::from("Missing required query parameter { {{baseName} }}")).unwrap()),
219202 };
220- { {/required} }
221- { {^required} }
203+ { {/required} }{ {^required} }
222204 let param_{ {{paramName} }} = param_{ {{paramName} }}.and_then(|param_{ {{paramName} }}| param_{ {{paramName} }}.parse::<{ {{baseType} }}>().ok());
223- { {/required} }
224- { {/isListContainer} }
225- { {/queryParams} }
226- { {#vendorExtensions} }
227- { {^consumesMultipart} }
228- { {#bodyParams} }
229- { {#-first} }
205+ { {/required} }{ {/isListContainer} }{ {/queryParams} }{ {#vendorExtensions} }{ {^consumesMultipart} }{ {#bodyParams} }{ {#-first} }
230206 // Body parameters (note that non-required body parameters will ignore garbage
231207 // values, rather than causing a 400 response). Produce warning header and logs for
232208 // any unused fields
@@ -243,55 +219,40 @@ where
243219 }
244220 Ok(v) => v,
245221 };
246- { {#vendorExtensions} }
247- { {^consumesPlainText} }
222+ { {#vendorExtensions} }{ {^consumesPlainText} }
248223 let mut unused_elements = Vec::new();
249- { {/consumesPlainText} }
224+ { {/consumesPlainText} }
250225 let param_{ {{paramName} }}: Option<{ {{dataType} }}> = if body.remaining() > 0 {
251- {{#consumesXml} }
226+ {{#consumesXml} }
252227 let deserializer = &mut serde_xml_rs::de::Deserializer::new_from_reader(body.reader());
253- { {/consumesXml} }
254- { {#consumesJson} }
228+ { {/consumesXml} }{ {#consumesJson} }
255229 let deserializer = &mut serde_json::Deserializer::from_reader(body.reader());
256- { {/consumesJson} }
257- { {^consumesPlainText} }
230+ { {/consumesJson} }{ {^consumesPlainText} }
258231 match serde_ignored::deserialize(deserializer, |path| {
259232 warn! (" Ignoring unknown field in body: {}" , path);
260233 unused_elements.push(path.to_string());
261234 } ) {
262235 Ok(param_{{{paramName} }}) => param_{ {{paramName} }},
263- { {#required} }
236+ { {#required} }
264237 Err(e) => return Ok(Response::builder().status(StatusCode::BAD_REQUEST).body(hyper::Body::from(format!("Couldn't parse body parameter { {{baseName} }} - doesn't match schema: { } ", e))).unwrap()),
265- { {/required} }
266- { {^required} }
238+ { {/required} }{ {^required} }
267239 Err(_) => None,
268- { {/required} }
240+ { {/required} }
269241 }
270- { {/consumesPlainText} }
271- { {#consumesPlainText} }
272- { {#isByteArray} }
242+ { {/consumesPlainText} }{ {#consumesPlainText} }{ {#isByteArray} }
273243 Some(openapi_context::ByteArray(bytes))
274- { {/isByteArray} }
275- { {#isString} }
244+ { {/isByteArray} }{ {#isString} }
276245 Some(String::from_utf8(bytes).unwrap())
277- { {/isString} }
278- { {/consumesPlainText} }
246+ { {/isString} }{ {/consumesPlainText} }
279247 } else {
280248 None
281249 } ;
282- { {/vendorExtensions} }
283- { {#required} }
250+ { {/vendorExtensions} }{ {#required} }
284251 let param_{ {{paramName} }} = match param_{ {{paramName} }} {
285252 Some(param_{{{paramName} }}) => param_{ {{paramName} }},
286253 None => return Ok(Response::builder().status(StatusCode::BAD_REQUEST).body(hyper::Body::from("Missing required body parameter { {{baseName} }}")).unwrap()),
287254 };
288- { {/required} }
289- { {/-first} }
290- { {/bodyParams} }
291- { {/consumesMultipart} }
292- { {#consumesMultipart} }
293- { {^bodyParams} }
294- { {#vendorExtensions} }
255+ { {/required} }{ {/-first} }{ {/bodyParams} }{ {/consumesMultipart} }{ {#consumesMultipart} }{ {^bodyParams} }{ {#vendorExtensions} }
295256 // Form Body parameters (note that non-required body parameters will ignore garbage
296257 // values, rather than causing a 400 response). Produce warning header and logs for
297258 // any unused fields.
@@ -316,10 +277,9 @@ where
316277 return Ok(Response::builder().status(StatusCode::BAD_REQUEST).body(hyper::Body::from(format! (" Unable to process all message parts" ))).unwrap())
317278 } ,
318279 };
319- { {#formParams} }{ {#-first} }{ {/-first} }
320- { {#isByteArray} }
280+ { {#formParams} }{ {#-first} }{ {/-first} }{ {#isByteArray} }
321281 let file_{ {{paramName} }} = entries.fields.remove("{ {{paramName} }}");
322- { {#required} }
282+ { {#required} }
323283 let param_{ {{paramName} }} = match file_{ {{paramName} }} {
324284 Some(file) => {
325285 let mut reader = file[0].data.readable().unwrap();
@@ -329,7 +289,7 @@ where
329289 }
330290 None => return Ok(Response::new().status(StatusCode::BAD_REQUEST).body(format!("Missing required form parameter { {{paramName} }}")).unwrap()),
331291 };
332- { {/required} }{ {^required} }
292+ { {/required} }{ {^required} }
333293 let param_{ {{paramName} }} = match file_{ {{paramName} }} {
334294 Some(file) => {
335295 let mut reader = file[0].data.readable().unwrap();
@@ -339,11 +299,9 @@ where
339299 }
340300 None => None,
341301 };
342- { {/required} }
343- { {/isByteArray} }
344- { {^isByteArray} }{ {#jsonSchema} }
302+ { {/required} }{ {/isByteArray} }{ {^isByteArray} }{ {#jsonSchema} }
345303 let file_{ {{paramName} }} = entries.fields.remove("{ {{paramName} }}");
346- { {#required} }
304+ { {#required} }
347305 let param_{ {{paramName} }} = match file_{ {{paramName} }} {
348306 Some(file) => {
349307 let mut reader = file[0].data.readable().unwrap();
@@ -359,7 +317,7 @@ where
359317 }
360318 None => return Ok(Response::builder().status(StatusCode::BAD_REQUEST).body(hyper::Body::from(format!("Missing required form parameter { {{paramName} }}"))).unwrap()),
361319 };
362- { {/required} }{ {^required} }
320+ { {/required} }{ {^required} }
363321 let param_{ {{paramName} }} = match file_{ {{paramName} }} {
364322 Some(file) => {
365323 let mut reader = file[0].data.readable().unwrap();
@@ -370,25 +328,12 @@ where
370328 }
371329 None => None,
372330 };
373- { {/required} }
374- { {/jsonSchema} }{ {/isByteArray} }
375- { {/formParams} }
376- { {/vendorExtensions} }
377- { {/bodyParams} }
378- { {/consumesMultipart} }
379- { {^consumesMultipart} }
380- { {^bodyParams} }
381- { {#vendorExtensions} }
382- { {#formParams} }
383- { {#-first} }
331+ { {/required} }{ {/jsonSchema} }{ {/isByteArray} }{ {/formParams} }{ {/vendorExtensions} }{ {/bodyParams} }{ {/consumesMultipart} }
332+ { {^consumesMultipart} }{ {^bodyParams} }{ {#vendorExtensions} }{ {#formParams} }{ {#-first} }
384333 // Form parameters
385- { {/-first} }
334+ { {/-first} }
386335 let param_{ {{paramName} }} = { {^isContainer} }{ {#vendorExtensions} }{ {{example} }};{ {/vendorExtensions} }{ {/isContainer} }{ {#isListContainer} }{ {#required} }Vec::new();{ {/required} }{ {^required} }None;{ {/required} }{ {/isListContainer} }{ {#isMapContainer} }None;{ {/isMapContainer} }
387- { {/formParams} }
388- { {/vendorExtensions} }
389- { {/bodyParams} }
390- { {/consumesMultipart} }
391- { {/vendorExtensions} }
336+ { {/formParams} }{ {/vendorExtensions} }{ {/bodyParams} }{ {/consumesMultipart} }{ {/vendorExtensions} }
392337 let result = api_impl.{ {#vendorExtensions} }{ {{operation_id} }}{ {/vendorExtensions} }({ {#allParams} }param_{ {{paramName} }}{ {#isListContainer} }.as_ref(){ {/isListContainer} }, { {/allParams} }&context).await;
393338 let mut response = Response::builder();
394339 response.headers_mut().unwrap().typed_insert(XSpanId( (&context as &dyn Has<XSpanId >).get().0.to_string() ));
@@ -401,59 +346,54 @@ where
401346 }
402347 Ok(r) => r,
403348 };
404- { {#bodyParams} }{ {#vendorExtensions} }{ {^consumesPlainText} }
349+ { {#bodyParams} }{ {#vendorExtensions} }{ {^consumesPlainText} }
405350 if !unused_elements.is_empty() {
406351 response.headers_mut().unwrap().typed_insert(Warning(format! (" Ignoring unknown fields in body: {:?}" , unused_elements)));
407352 }
408- { {/consumesPlainText} }{ {/vendorExtensions} }{ {/bodyParams} }
353+ { {/consumesPlainText} }{ {/vendorExtensions} }{ {/bodyParams} }
409354 match result {
410- {{#responses} }
355+ {{#responses} }
411356 { {{operationId} }}Response::{ {#vendorExtensions} }{ {x-responseId} }{ {/vendorExtensions} }{ {#dataType} }{ {^headers} }(body){ {/headers} }{ {#headers} }
412- { {#-first} }
357+ { {#-first} }
413358 {
414359 body,
415360 {{/-first} }{ {{name} }}{ {^-last} }, { {/-last} }{ {#-last} }
416361 }
417- { {/-last} }
418- { {/headers} }{ {/dataType} }
419- { {^dataType} }{ {#headers} }{ {#-first} }
362+ { {/-last} }{ {/headers} }{ {/dataType} }
363+ { {^dataType} }{ {#headers} }{ {#-first} }
420364 {
421365 {{/-first} }{ {{name} }}{ {^-last} }, { {/-last} }{ {#-last} }
422366 }
423- { {/-last} }
424- { {/headers} }{ {/dataType} }
367+ { {/-last} }{ {/headers} }{ {/dataType} }
425368 => {
426369 response = response.status(hyper::http::StatusCode::from_u16({{{code} }}).unwrap());
427- { {#headers} }
370+ { {#headers} }
428371 response.headers_mut().unwrap().typed_insert(Response{ {{nameInCamelCase} }}({ {{name} }}));
429- { {/headers} }
430- { {#produces} }{ {#-first} }{ {#dataType} }
372+ { {/headers} }{ {#produces} }{ {#-first} }{ {#dataType} }
431373 let header = headers::ContentType::from(mimetypes::responses::{ {#vendorExtensions} }{ {{uppercase_operation_id} }}_{ {x-uppercaseResponseId} }{ {/vendorExtensions} }.clone());
432374 response.headers_mut().unwrap().typed_insert(header);
433- { {/dataType} }{ {/-first} }{ {/produces} }
434- { {#dataType} }
435- { {#vendorExtensions} }{ {#producesXml} }{ {^has_namespace} }
375+ { {/dataType} }{ {/-first} }{ {/produces} }{ {#dataType} }
376+ { {#vendorExtensions} }{ {#producesXml} }{ {^has_namespace} }
436377 let body = serde_xml_rs::to_string(&body).expect("impossible to fail to serialize");
437- { {/has_namespace} }{ {#has_namespace} }
378+ { {/has_namespace} }{ {#has_namespace} }
438379 let mut namespaces = BTreeMap::new();
439380 // An empty string is used to indicate a global namespace in xmltree.
440381 namespaces.insert("".to_string(), { {{dataType} }}::NAMESPACE.to_string());
441382 let body = serde_xml_rs::to_string_with_namespaces(&body, namespaces).expect("impossible to fail to serialize");
442- { {/has_namespace} }{ {/producesXml} }{ {#producesJson} }
383+ { {/has_namespace} }{ {/producesXml} }{ {#producesJson} }
443384 let body = serde_json::to_string(&body).expect("impossible to fail to serialize");
444- { {/producesJson} }{ {#producesPlainText} }
385+ { {/producesJson} }{ {#producesPlainText} }
445386 let body = body.0;
446- { {/producesPlainText} }{ {/vendorExtensions} }
387+ { {/producesPlainText} }{ {/vendorExtensions} }
447388 Ok(response.body(Body::from(body)).unwrap())
448- { {/dataType} }
449- { {^dataType} }
389+ { {/dataType} }{ {^dataType} }
450390 Ok(response.body(Body::empty()).unwrap())
451- { {/dataType} }
391+ { {/dataType} }
452392 },
453- { {/responses} }
393+ { {/responses} }
454394 }
455395 },
456- { {/operation} }{ {/operations} }{ {/apis} }{ {/apiInfo} }
396+ { {/operation} }{ {/operations} }{ {/apis} }{ {/apiInfo} }
457397 _ => Ok(Response::builder().status(StatusCode::NOT_FOUND).body(Body::empty()).unwrap()),
458398 }
459399}
0 commit comments