[ruby] Not symbolize header param keys to allow the usage of underscore ("_") character (#16396)

* [ruby] Not symbolize header param keys to allow the usage of underscore ("_") character

* use lambda to convert header key to a string if underscore is included
This commit is contained in:
Yohei Kitamura 2023-08-28 22:42:53 -04:00 committed by GitHub
parent 55252f4b25
commit 56105fbbe6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 38 additions and 22 deletions

View File

@ -17,6 +17,8 @@
package org.openapitools.codegen.languages; package org.openapitools.codegen.languages;
import com.samskivert.mustache.Mustache;
import com.samskivert.mustache.Template;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
@ -30,6 +32,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.io.File; import java.io.File;
import java.io.IOException;
import java.io.Writer;
import java.util.*; import java.util.*;
import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.camelize;
@ -286,6 +290,18 @@ public class RubyClientCodegen extends AbstractRubyCodegen {
.doNotOverwrite()); .doNotOverwrite());
supportingFiles.add(new SupportingFile("api_client_spec.mustache", specFolder, "api_client_spec.rb") supportingFiles.add(new SupportingFile("api_client_spec.mustache", specFolder, "api_client_spec.rb")
.doNotOverwrite()); .doNotOverwrite());
// add lambda to convert a symbol to a string if an underscore is included (e.g. :'user_uuid' => 'user_uuid')
additionalProperties.put("lambdaFixHeaderKey", new Mustache.Lambda() {
@Override
public void execute(Template.Fragment fragment, Writer writer) throws IOException {
String content = fragment.execute();
if (content.contains("_")) {
content = content.substring(1);
}
writer.write(content);
}
});
} }
@Override @Override

View File

@ -199,12 +199,12 @@ module {{moduleName}}
{{/hasConsumes}} {{/hasConsumes}}
{{#headerParams}} {{#headerParams}}
{{#required}} {{#required}}
header_params[:'{{{baseName}}}'] = {{#collectionFormat}}@api_client.build_collection_param({{{paramName}}}, :{{{collectionFormat}}}){{/collectionFormat}}{{^collectionFormat}}{{{paramName}}}{{/collectionFormat}} header_params[{{#lambdaFixHeaderKey}}:'{{{baseName}}}'{{/lambdaFixHeaderKey}}] = {{#collectionFormat}}@api_client.build_collection_param({{{paramName}}}, :{{{collectionFormat}}}){{/collectionFormat}}{{^collectionFormat}}{{{paramName}}}{{/collectionFormat}}
{{/required}} {{/required}}
{{/headerParams}} {{/headerParams}}
{{#headerParams}} {{#headerParams}}
{{^required}} {{^required}}
header_params[:'{{{baseName}}}'] = {{#collectionFormat}}@api_client.build_collection_param(opts[:'{{{paramName}}}'], :{{{collectionFormat}}}){{/collectionFormat}}{{^collectionFormat}}opts[:'{{{paramName}}}']{{/collectionFormat}} if !opts[:'{{{paramName}}}'].nil? header_params[{{#lambdaFixHeaderKey}}:'{{{baseName}}}'{{/lambdaFixHeaderKey}}] = {{#collectionFormat}}@api_client.build_collection_param(opts[:'{{{paramName}}}'], :{{{collectionFormat}}}){{/collectionFormat}}{{^collectionFormat}}opts[:'{{{paramName}}}']{{/collectionFormat}} if !opts[:'{{{paramName}}}'].nil?
{{/required}} {{/required}}
{{/headerParams}} {{/headerParams}}

View File

@ -168,7 +168,7 @@ module Petstore
if !content_type.nil? if !content_type.nil?
header_params['Content-Type'] = content_type header_params['Content-Type'] = content_type
end end
header_params[:'header_1'] = opts[:'header_1'] if !opts[:'header_1'].nil? header_params['header_1'] = opts[:'header_1'] if !opts[:'header_1'].nil?
# form parameters # form parameters
form_params = opts[:form_params] || {} form_params = opts[:form_params] || {}
@ -1031,8 +1031,8 @@ module Petstore
if !content_type.nil? if !content_type.nil?
header_params['Content-Type'] = content_type header_params['Content-Type'] = content_type
end end
header_params[:'enum_header_string_array'] = @api_client.build_collection_param(opts[:'enum_header_string_array'], :csv) if !opts[:'enum_header_string_array'].nil? header_params['enum_header_string_array'] = @api_client.build_collection_param(opts[:'enum_header_string_array'], :csv) if !opts[:'enum_header_string_array'].nil?
header_params[:'enum_header_string'] = opts[:'enum_header_string'] if !opts[:'enum_header_string'].nil? header_params['enum_header_string'] = opts[:'enum_header_string'] if !opts[:'enum_header_string'].nil?
# form parameters # form parameters
form_params = opts[:form_params] || {} form_params = opts[:form_params] || {}
@ -1122,8 +1122,8 @@ module Petstore
# header parameters # header parameters
header_params = opts[:header_params] || {} header_params = opts[:header_params] || {}
header_params[:'required_boolean_group'] = required_boolean_group header_params['required_boolean_group'] = required_boolean_group
header_params[:'boolean_group'] = opts[:'boolean_group'] if !opts[:'boolean_group'].nil? header_params['boolean_group'] = opts[:'boolean_group'] if !opts[:'boolean_group'].nil?
# form parameters # form parameters
form_params = opts[:form_params] || {} form_params = opts[:form_params] || {}

View File

@ -118,7 +118,7 @@ module Petstore
# header parameters # header parameters
header_params = opts[:header_params] || {} header_params = opts[:header_params] || {}
header_params[:'api_key'] = opts[:'api_key'] if !opts[:'api_key'].nil? header_params['api_key'] = opts[:'api_key'] if !opts[:'api_key'].nil?
# form parameters # form parameters
form_params = opts[:form_params] || {} form_params = opts[:form_params] || {}

View File

@ -168,7 +168,7 @@ module Petstore
if !content_type.nil? if !content_type.nil?
header_params['Content-Type'] = content_type header_params['Content-Type'] = content_type
end end
header_params[:'header_1'] = opts[:'header_1'] if !opts[:'header_1'].nil? header_params['header_1'] = opts[:'header_1'] if !opts[:'header_1'].nil?
# form parameters # form parameters
form_params = opts[:form_params] || {} form_params = opts[:form_params] || {}
@ -1031,8 +1031,8 @@ module Petstore
if !content_type.nil? if !content_type.nil?
header_params['Content-Type'] = content_type header_params['Content-Type'] = content_type
end end
header_params[:'enum_header_string_array'] = @api_client.build_collection_param(opts[:'enum_header_string_array'], :csv) if !opts[:'enum_header_string_array'].nil? header_params['enum_header_string_array'] = @api_client.build_collection_param(opts[:'enum_header_string_array'], :csv) if !opts[:'enum_header_string_array'].nil?
header_params[:'enum_header_string'] = opts[:'enum_header_string'] if !opts[:'enum_header_string'].nil? header_params['enum_header_string'] = opts[:'enum_header_string'] if !opts[:'enum_header_string'].nil?
# form parameters # form parameters
form_params = opts[:form_params] || {} form_params = opts[:form_params] || {}
@ -1122,8 +1122,8 @@ module Petstore
# header parameters # header parameters
header_params = opts[:header_params] || {} header_params = opts[:header_params] || {}
header_params[:'required_boolean_group'] = required_boolean_group header_params['required_boolean_group'] = required_boolean_group
header_params[:'boolean_group'] = opts[:'boolean_group'] if !opts[:'boolean_group'].nil? header_params['boolean_group'] = opts[:'boolean_group'] if !opts[:'boolean_group'].nil?
# form parameters # form parameters
form_params = opts[:form_params] || {} form_params = opts[:form_params] || {}

View File

@ -118,7 +118,7 @@ module Petstore
# header parameters # header parameters
header_params = opts[:header_params] || {} header_params = opts[:header_params] || {}
header_params[:'api_key'] = opts[:'api_key'] if !opts[:'api_key'].nil? header_params['api_key'] = opts[:'api_key'] if !opts[:'api_key'].nil?
# form parameters # form parameters
form_params = opts[:form_params] || {} form_params = opts[:form_params] || {}

View File

@ -168,7 +168,7 @@ module Petstore
if !content_type.nil? if !content_type.nil?
header_params['Content-Type'] = content_type header_params['Content-Type'] = content_type
end end
header_params[:'header_1'] = opts[:'header_1'] if !opts[:'header_1'].nil? header_params['header_1'] = opts[:'header_1'] if !opts[:'header_1'].nil?
# form parameters # form parameters
form_params = opts[:form_params] || {} form_params = opts[:form_params] || {}
@ -562,8 +562,8 @@ module Petstore
# header parameters # header parameters
header_params = opts[:header_params] || {} header_params = opts[:header_params] || {}
header_params[:'_type'] = underscore_type header_params['_type'] = underscore_type
header_params[:'type_'] = type_with_underscore header_params['type_'] = type_with_underscore
# form parameters # form parameters
form_params = opts[:form_params] || {} form_params = opts[:form_params] || {}
@ -1112,8 +1112,8 @@ module Petstore
if !content_type.nil? if !content_type.nil?
header_params['Content-Type'] = content_type header_params['Content-Type'] = content_type
end end
header_params[:'enum_header_string_array'] = @api_client.build_collection_param(opts[:'enum_header_string_array'], :csv) if !opts[:'enum_header_string_array'].nil? header_params['enum_header_string_array'] = @api_client.build_collection_param(opts[:'enum_header_string_array'], :csv) if !opts[:'enum_header_string_array'].nil?
header_params[:'enum_header_string'] = opts[:'enum_header_string'] if !opts[:'enum_header_string'].nil? header_params['enum_header_string'] = opts[:'enum_header_string'] if !opts[:'enum_header_string'].nil?
# form parameters # form parameters
form_params = opts[:form_params] || {} form_params = opts[:form_params] || {}
@ -1203,8 +1203,8 @@ module Petstore
# header parameters # header parameters
header_params = opts[:header_params] || {} header_params = opts[:header_params] || {}
header_params[:'required_boolean_group'] = required_boolean_group header_params['required_boolean_group'] = required_boolean_group
header_params[:'boolean_group'] = opts[:'boolean_group'] if !opts[:'boolean_group'].nil? header_params['boolean_group'] = opts[:'boolean_group'] if !opts[:'boolean_group'].nil?
# form parameters # form parameters
form_params = opts[:form_params] || {} form_params = opts[:form_params] || {}

View File

@ -118,7 +118,7 @@ module Petstore
# header parameters # header parameters
header_params = opts[:header_params] || {} header_params = opts[:header_params] || {}
header_params[:'api_key'] = opts[:'api_key'] if !opts[:'api_key'].nil? header_params['api_key'] = opts[:'api_key'] if !opts[:'api_key'].nil?
# form parameters # form parameters
form_params = opts[:form_params] || {} form_params = opts[:form_params] || {}