From 56105fbbe66dbbb555cc0e0a3344eabd36ea7fd1 Mon Sep 17 00:00:00 2001 From: Yohei Kitamura Date: Mon, 28 Aug 2023 22:42:53 -0400 Subject: [PATCH] [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 --- .../codegen/languages/RubyClientCodegen.java | 16 ++++++++++++++++ .../src/main/resources/ruby-client/api.mustache | 4 ++-- .../ruby-autoload/lib/petstore/api/fake_api.rb | 10 +++++----- .../ruby-autoload/lib/petstore/api/pet_api.rb | 2 +- .../ruby-faraday/lib/petstore/api/fake_api.rb | 10 +++++----- .../ruby-faraday/lib/petstore/api/pet_api.rb | 2 +- .../petstore/ruby/lib/petstore/api/fake_api.rb | 14 +++++++------- .../petstore/ruby/lib/petstore/api/pet_api.rb | 2 +- 8 files changed, 38 insertions(+), 22 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java index 0c6bc28a4bd..c477efa559f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java @@ -17,6 +17,8 @@ package org.openapitools.codegen.languages; +import com.samskivert.mustache.Mustache; +import com.samskivert.mustache.Template; import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; @@ -30,6 +32,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; +import java.io.IOException; +import java.io.Writer; import java.util.*; import static org.openapitools.codegen.utils.StringUtils.camelize; @@ -286,6 +290,18 @@ public class RubyClientCodegen extends AbstractRubyCodegen { .doNotOverwrite()); supportingFiles.add(new SupportingFile("api_client_spec.mustache", specFolder, "api_client_spec.rb") .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 diff --git a/modules/openapi-generator/src/main/resources/ruby-client/api.mustache b/modules/openapi-generator/src/main/resources/ruby-client/api.mustache index f50cdd59d9d..9e966c22ce4 100644 --- a/modules/openapi-generator/src/main/resources/ruby-client/api.mustache +++ b/modules/openapi-generator/src/main/resources/ruby-client/api.mustache @@ -199,12 +199,12 @@ module {{moduleName}} {{/hasConsumes}} {{#headerParams}} {{#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}} {{/headerParams}} {{#headerParams}} {{^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}} {{/headerParams}} diff --git a/samples/client/petstore/ruby-autoload/lib/petstore/api/fake_api.rb b/samples/client/petstore/ruby-autoload/lib/petstore/api/fake_api.rb index 1e0754d5360..554b0a48bc0 100644 --- a/samples/client/petstore/ruby-autoload/lib/petstore/api/fake_api.rb +++ b/samples/client/petstore/ruby-autoload/lib/petstore/api/fake_api.rb @@ -168,7 +168,7 @@ module Petstore if !content_type.nil? header_params['Content-Type'] = content_type 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_params = opts[:form_params] || {} @@ -1031,8 +1031,8 @@ module Petstore if !content_type.nil? header_params['Content-Type'] = content_type 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'] = opts[:'enum_header_string'] if !opts[:'enum_header_string'].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? # form parameters form_params = opts[:form_params] || {} @@ -1122,8 +1122,8 @@ module Petstore # header parameters header_params = opts[:header_params] || {} - header_params[:'required_boolean_group'] = required_boolean_group - header_params[:'boolean_group'] = opts[:'boolean_group'] if !opts[:'boolean_group'].nil? + header_params['required_boolean_group'] = required_boolean_group + header_params['boolean_group'] = opts[:'boolean_group'] if !opts[:'boolean_group'].nil? # form parameters form_params = opts[:form_params] || {} diff --git a/samples/client/petstore/ruby-autoload/lib/petstore/api/pet_api.rb b/samples/client/petstore/ruby-autoload/lib/petstore/api/pet_api.rb index c1a690a2a6f..f9f9c9d15b9 100644 --- a/samples/client/petstore/ruby-autoload/lib/petstore/api/pet_api.rb +++ b/samples/client/petstore/ruby-autoload/lib/petstore/api/pet_api.rb @@ -118,7 +118,7 @@ module Petstore # header parameters 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_params = opts[:form_params] || {} diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb index 1e0754d5360..554b0a48bc0 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb @@ -168,7 +168,7 @@ module Petstore if !content_type.nil? header_params['Content-Type'] = content_type 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_params = opts[:form_params] || {} @@ -1031,8 +1031,8 @@ module Petstore if !content_type.nil? header_params['Content-Type'] = content_type 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'] = opts[:'enum_header_string'] if !opts[:'enum_header_string'].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? # form parameters form_params = opts[:form_params] || {} @@ -1122,8 +1122,8 @@ module Petstore # header parameters header_params = opts[:header_params] || {} - header_params[:'required_boolean_group'] = required_boolean_group - header_params[:'boolean_group'] = opts[:'boolean_group'] if !opts[:'boolean_group'].nil? + header_params['required_boolean_group'] = required_boolean_group + header_params['boolean_group'] = opts[:'boolean_group'] if !opts[:'boolean_group'].nil? # form parameters form_params = opts[:form_params] || {} diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb index 14e71259909..549c721ab85 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb @@ -118,7 +118,7 @@ module Petstore # header parameters 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_params = opts[:form_params] || {} diff --git a/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb b/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb index 36a80a5786e..8b70e338e64 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb @@ -168,7 +168,7 @@ module Petstore if !content_type.nil? header_params['Content-Type'] = content_type 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_params = opts[:form_params] || {} @@ -562,8 +562,8 @@ module Petstore # header parameters header_params = opts[:header_params] || {} - header_params[:'_type'] = underscore_type - header_params[:'type_'] = type_with_underscore + header_params['_type'] = underscore_type + header_params['type_'] = type_with_underscore # form parameters form_params = opts[:form_params] || {} @@ -1112,8 +1112,8 @@ module Petstore if !content_type.nil? header_params['Content-Type'] = content_type 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'] = opts[:'enum_header_string'] if !opts[:'enum_header_string'].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? # form parameters form_params = opts[:form_params] || {} @@ -1203,8 +1203,8 @@ module Petstore # header parameters header_params = opts[:header_params] || {} - header_params[:'required_boolean_group'] = required_boolean_group - header_params[:'boolean_group'] = opts[:'boolean_group'] if !opts[:'boolean_group'].nil? + header_params['required_boolean_group'] = required_boolean_group + header_params['boolean_group'] = opts[:'boolean_group'] if !opts[:'boolean_group'].nil? # form parameters form_params = opts[:form_params] || {} diff --git a/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb b/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb index c1a690a2a6f..f9f9c9d15b9 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb @@ -118,7 +118,7 @@ module Petstore # header parameters 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_params = opts[:form_params] || {}