mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-06-30 12:40:52 +00:00
[rust] support model/maps as deep/explode params
This commit is contained in:
parent
d6c4634269
commit
c8bb57fead
@ -192,36 +192,66 @@ impl {{classname}} for {{classname}}Client {
|
||||
{{/isNullable}}
|
||||
{{#isNullable}}
|
||||
{{#isDeepObject}}
|
||||
if let Some(ref local_var_str) = {{{paramName}}} {
|
||||
let params = crate::apis::parse_deep_object("{{{baseName}}}", local_var_str);
|
||||
{{^isExplode}}
|
||||
if let Some(ref param_value) = {{{paramName}}} {
|
||||
let params = crate::apis::parse_deep_object("{{{baseName}}}", &serde_json::to_value(param_value)?);
|
||||
local_var_req_builder = local_var_req_builder.query(¶ms);
|
||||
};
|
||||
}
|
||||
{{/isExplode}}
|
||||
{{#isExplode}}
|
||||
{{#isModel}}
|
||||
if let Some(ref param_value) = {{{paramName}}} {
|
||||
local_var_req_builder = local_var_req_builder.query(¶m_value);
|
||||
}
|
||||
{{/isModel}}
|
||||
{{#isMap}}
|
||||
if let Some(ref param_value) = {{{paramName}}} {
|
||||
let mut query_params = Vec::with_capacity(param_value.len());
|
||||
for (key, value) in param_value.iter() {
|
||||
query_params.push((key.to_string(), serde_json::to_string(value)?));
|
||||
}
|
||||
local_var_req_builder = local_var_req_builder.query(&query_params);
|
||||
}
|
||||
{{/isMap}}
|
||||
{{/isExplode}}
|
||||
{{/isDeepObject}}
|
||||
{{^isDeepObject}}
|
||||
if let Some(ref local_var_str) = {{{paramName}}} {
|
||||
local_var_req_builder = local_var_req_builder.query(&[("{{{baseName}}}", &local_var_str.to_string())]);
|
||||
if let Some(ref param_value) = {{{paramName}}} {
|
||||
local_var_req_builder = local_var_req_builder.query(&[("{{{baseName}}}", ¶m_value.to_string())]);
|
||||
};
|
||||
{{/isDeepObject}}
|
||||
{{/isNullable}}
|
||||
{{/isArray}}
|
||||
{{/required}}
|
||||
{{^required}}
|
||||
if let Some(ref local_var_str) = {{{paramName}}} {
|
||||
if let Some(ref param_value) = {{{paramName}}} {
|
||||
{{#isArray}}
|
||||
local_var_req_builder = match "{{collectionFormat}}" {
|
||||
"multi" => local_var_req_builder.query(&local_var_str.into_iter().map(|p| ("{{{baseName}}}".to_owned(), p.to_string())).collect::<Vec<(std::string::String, std::string::String)>>()),
|
||||
_ => local_var_req_builder.query(&[("{{{baseName}}}", &local_var_str.into_iter().map(|p| p.to_string()).collect::<Vec<String>>().join(",").to_string())]),
|
||||
"multi" => local_var_req_builder.query(¶m_value.into_iter().map(|p| ("{{{baseName}}}".to_owned(), p.to_string())).collect::<Vec<(std::string::String, std::string::String)>>()),
|
||||
_ => local_var_req_builder.query(&[("{{{baseName}}}", ¶m_value.into_iter().map(|p| p.to_string()).collect::<Vec<String>>().join(",").to_string())]),
|
||||
};
|
||||
{{/isArray}}
|
||||
{{^isArray}}
|
||||
{{#isDeepObject}}
|
||||
let params = crate::apis::parse_deep_object("{{{baseName}}}", local_var_str);
|
||||
{{^isExplode}}
|
||||
let params = crate::apis::parse_deep_object("{{{baseName}}}", &serde_json::to_value(param_value)?);
|
||||
local_var_req_builder = local_var_req_builder.query(¶ms);
|
||||
{{/isExplode}}
|
||||
{{#isExplode}}
|
||||
{{#isModel}}
|
||||
local_var_req_builder = local_var_req_builder.query(¶m_value);
|
||||
{{/isModel}}
|
||||
{{#isMap}}
|
||||
let mut query_params = Vec::with_capacity(param_value.len());
|
||||
for (key, value) in param_value.iter() {
|
||||
query_params.push((key.to_string(), serde_json::to_string(value)?));
|
||||
}
|
||||
local_var_req_builder = local_var_req_builder.query(&query_params);
|
||||
{{/isMap}}
|
||||
{{/isExplode}}
|
||||
{{/isDeepObject}}
|
||||
{{^isDeepObject}}
|
||||
local_var_req_builder = local_var_req_builder.query(&[("{{{baseName}}}", &local_var_str.to_string())]);
|
||||
local_var_req_builder = local_var_req_builder.query(&[("{{{baseName}}}", ¶m_value.to_string())]);
|
||||
{{/isDeepObject}}
|
||||
{{/isArray}}
|
||||
}
|
||||
{{/required}}
|
||||
{{/queryParams}}
|
||||
|
@ -160,8 +160,22 @@ pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration:
|
||||
{{#isNullable}}
|
||||
{{#isDeepObject}}
|
||||
if let Some(ref param_value) = {{{vendorExtensions.x-rust-param-identifier}}} {
|
||||
let params = crate::apis::parse_deep_object("{{{baseName}}}", param_value);
|
||||
{{^isExplode}}
|
||||
let params = crate::apis::parse_deep_object("{{{baseName}}}", &serde_json::to_value(param_value)?);
|
||||
req_builder = req_builder.query(¶ms);
|
||||
{{/isExplode}}
|
||||
{{#isExplode}}
|
||||
{{#isModel}}
|
||||
req_builder = req_builder.query(¶m_value);
|
||||
{{/isModel}}
|
||||
{{#isMap}}
|
||||
let mut query_params = Vec::with_capacity(param_value.len());
|
||||
for (key, value) in param_value.iter() {
|
||||
query_params.push((key.to_string(), serde_json::to_string(value)?));
|
||||
}
|
||||
req_builder = req_builder.query(&query_params);
|
||||
{{/isMap}}
|
||||
{{/isExplode}}
|
||||
};
|
||||
{{/isDeepObject}}
|
||||
{{^isDeepObject}}
|
||||
@ -182,8 +196,22 @@ pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration:
|
||||
{{/isArray}}
|
||||
{{^isArray}}
|
||||
{{#isDeepObject}}
|
||||
let params = crate::apis::parse_deep_object("{{{baseName}}}", param_value);
|
||||
{{^isExplode}}
|
||||
let params = crate::apis::parse_deep_object("{{{baseName}}}", &serde_json::to_value(param_value)?);
|
||||
req_builder = req_builder.query(¶ms);
|
||||
{{/isExplode}}
|
||||
{{#isExplode}}
|
||||
{{#isModel}}
|
||||
req_builder = req_builder.query(¶m_value);
|
||||
{{/isModel}}
|
||||
{{#isMap}}
|
||||
let mut query_params = Vec::with_capacity(param_value.len());
|
||||
for (key, value) in param_value.iter() {
|
||||
query_params.push((key.to_string(), serde_json::to_string(value)?));
|
||||
}
|
||||
req_builder = req_builder.query(&query_params);
|
||||
{{/isMap}}
|
||||
{{/isExplode}}
|
||||
{{/isDeepObject}}
|
||||
{{^isDeepObject}}
|
||||
req_builder = req_builder.query(&[("{{{baseName}}}", ¶m_value.to_string())]);
|
||||
|
Loading…
x
Reference in New Issue
Block a user