Skip to content

Commit

Permalink
[Ruby] Use double-quote string to enable string interpolation (#2067)
Browse files Browse the repository at this point in the history
  • Loading branch information
autopp committed Feb 6, 2019
1 parent 0b66fa5 commit a1ec104
Show file tree
Hide file tree
Showing 22 changed files with 95 additions and 40 deletions.
Expand Up @@ -282,7 +282,7 @@
def {{{name}}}=({{{name}}})
validator = EnumAttributeValidator.new('{{{dataType}}}', [{{#allowableValues}}{{#values}}'{{{this}}}'{{^-last}}, {{/-last}}{{/values}}{{/allowableValues}}])
unless validator.valid?({{{name}}})
fail ArgumentError, 'invalid value for "{{{name}}}", must be one of #{validator.allowable_values}.'
fail ArgumentError, "invalid value for \"{{{name}}}\", must be one of #{validator.allowable_values}."
end
@{{{name}}} = {{{name}}}
end
Expand Down
@@ -1 +1 @@
3.1.1-SNAPSHOT
4.0.0-SNAPSHOT
2 changes: 1 addition & 1 deletion samples/client/petstore-security-test/ruby/.rubocop.yml
Expand Up @@ -136,7 +136,7 @@ Style/UnneededPercentQ:

# Align `end` with the matching keyword or starting expression except for
# assignments, where it should be aligned with the LHS.
Lint/EndAlignment:
Layout/EndAlignment:
Enabled: true
EnforcedStyleAlignWith: variable
AutoCorrect: true
Expand Down
1 change: 1 addition & 0 deletions samples/client/petstore-security-test/ruby/Gemfile
Expand Up @@ -4,4 +4,5 @@ gemspec

group :development, :test do
gem 'rake', '~> 12.0.0'
gem 'pry-byebug'
end
2 changes: 1 addition & 1 deletion samples/client/petstore-security-test/ruby/README.md
Expand Up @@ -58,7 +58,7 @@ require 'petstore'

api_instance = Petstore::FakeApi.new
opts = {
unknown_base_type: Petstore::UNKNOWN_BASE_TYPE.new # Object |
test_code_inject____end____rn_n_r: 'test_code_inject____end____rn_n_r_example' # String | To test code injection */ ' \\\" =_end -- \\\\r\\\\n \\\\n \\\\r
}

begin
Expand Down
8 changes: 5 additions & 3 deletions samples/client/petstore-security-test/ruby/docs/FakeApi.md
Expand Up @@ -12,14 +12,16 @@ Method | HTTP request | Description
To test code injection */ ' \" =_end -- \\r\\n \\n \\r

To test code injection */ ' \" =_end -- \\r\\n \\n \\r

### Example
```ruby
# load the gem
require 'petstore'

api_instance = Petstore::FakeApi.new
opts = {
unknown_base_type: Petstore::UNKNOWN_BASE_TYPE.new # Object |
test_code_inject____end____rn_n_r: 'test_code_inject____end____rn_n_r_example' # String | To test code injection */ ' \\\" =_end -- \\\\r\\\\n \\\\n \\\\r
}

begin
Expand All @@ -34,7 +36,7 @@ end

Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**unknown_base_type** | [**Object**](UNKNOWN_BASE_TYPE.md)| | [optional]
**test_code_inject____end____rn_n_r** | **String**| To test code injection */ ' \\\" =_end -- \\\\r\\\\n \\\\n \\\\r | [optional]

### Return type

Expand All @@ -46,7 +48,7 @@ No authorization required

### HTTP request headers

- **Content-Type**: application/json, */ \" =_end --
- **Content-Type**: application/x-www-form-urlencoded, */ \" =_end --
- **Accept**: Not defined


Expand Down
2 changes: 1 addition & 1 deletion samples/client/petstore-security-test/ruby/lib/petstore.rb
Expand Up @@ -6,7 +6,7 @@
OpenAPI spec version: 1.0.0 */ ' \" =_end -- \\r\\n \\n \\r
Contact: something@something.abc */ ' \" =_end -- \\r\\n \\n \\r
Generated by: https://openapi-generator.tech
OpenAPI Generator version: 3.1.1-SNAPSHOT
OpenAPI Generator version: 4.0.0-SNAPSHOT
=end

Expand Down
Expand Up @@ -6,7 +6,7 @@
OpenAPI spec version: 1.0.0 */ ' \" =_end -- \\r\\n \\n \\r
Contact: something@something.abc */ ' \" =_end -- \\r\\n \\n \\r
Generated by: https://openapi-generator.tech
OpenAPI Generator version: 3.1.1-SNAPSHOT
OpenAPI Generator version: 4.0.0-SNAPSHOT
=end

Expand All @@ -20,17 +20,19 @@ def initialize(api_client = ApiClient.default)
@api_client = api_client
end
# To test code injection */ ' \" =_end -- \\r\\n \\n \\r
# To test code injection */ ' \" =_end -- \\r\\n \\n \\r
# @param [Hash] opts the optional parameters
# @option opts [Object] :unknown_base_type
# @option opts [String] :test_code_inject____end____rn_n_r To test code injection */ ' \\\" =_end -- \\\\r\\\\n \\\\n \\\\r
# @return [nil]
def test_code_inject____end__rn_n_r(opts = {})
test_code_inject____end__rn_n_r_with_http_info(opts)
nil
end

# To test code injection */ ' \" =_end -- \\r\\n \\n \\r
# To test code injection */ ' \" =_end -- \\r\\n \\n \\r
# @param [Hash] opts the optional parameters
# @option opts [Object] :unknown_base_type
# @option opts [String] :test_code_inject____end____rn_n_r To test code injection */ ' \\\" =_end -- \\\\r\\\\n \\\\n \\\\r
# @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
def test_code_inject____end__rn_n_r_with_http_info(opts = {})
if @api_client.config.debugging
Expand All @@ -45,13 +47,14 @@ def test_code_inject____end__rn_n_r_with_http_info(opts = {})
# header parameters
header_params = {}
# HTTP header 'Content-Type'
header_params['Content-Type'] = @api_client.select_header_content_type(['application/json', '*/ \" =_end -- '])
header_params['Content-Type'] = @api_client.select_header_content_type(['application/x-www-form-urlencoded', '*/ \" =_end -- '])

# form parameters
form_params = {}
form_params['test code inject */ &#39; &quot; &#x3D;end -- \r\n \n \r'] = opts[:'test_code_inject____end____rn_n_r'] if !opts[:'test_code_inject____end____rn_n_r'].nil?

# http body (model)
post_body = @api_client.object_to_http_body(opts[:'unknown_base_type'])
post_body = nil
auth_names = []
data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
:header_params => header_params,
Expand All @@ -64,5 +67,6 @@ def test_code_inject____end__rn_n_r_with_http_info(opts = {})
end
return data, status_code, headers
end

end
end
Expand Up @@ -6,7 +6,7 @@
OpenAPI spec version: 1.0.0 */ &#39; \&quot; &#x3D;_end -- \\r\\n \\n \\r
Contact: something@something.abc */ ' \" =_end -- \\r\\n \\n \\r
Generated by: https://openapi-generator.tech
OpenAPI Generator version: 3.1.1-SNAPSHOT
OpenAPI Generator version: 4.0.0-SNAPSHOT
=end

Expand Down Expand Up @@ -143,7 +143,7 @@ def json_mime?(mime)
# Deserialize the response to the given return type.
#
# @param [Response] response HTTP response
# @param [String] return_type some examples: "User", "Array[User]", "Hash[String,Integer]"
# @param [String] return_type some examples: "User", "Array<User>", "Hash<String, Integer>"
def deserialize(response, return_type)
body = response.body

Expand Down Expand Up @@ -210,9 +210,7 @@ def convert_to_type(data, return_type)
end
else
# models, e.g. Pet
Petstore.const_get(return_type).new.tap do |model|
model.build_from_hash data
end
Petstore.const_get(return_type).build_from_hash(data)
end
end

Expand Down Expand Up @@ -244,7 +242,7 @@ def download_file(request)
tempfile.write(chunk)
end
request.on_complete do |response|
tempfile.close
tempfile.close if tempfile
@config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
"with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
"will be deleted automatically with GC. It's also recommended to delete the temp file "\
Expand Down
Expand Up @@ -6,7 +6,7 @@
OpenAPI spec version: 1.0.0 */ &#39; \&quot; &#x3D;_end -- \\r\\n \\n \\r
Contact: something@something.abc */ ' \" =_end -- \\r\\n \\n \\r
Generated by: https://openapi-generator.tech
OpenAPI Generator version: 3.1.1-SNAPSHOT
OpenAPI Generator version: 4.0.0-SNAPSHOT
=end

Expand Down
Expand Up @@ -6,7 +6,7 @@
OpenAPI spec version: 1.0.0 */ &#39; \&quot; &#x3D;_end -- \\r\\n \\n \\r
Contact: something@something.abc */ ' \" =_end -- \\r\\n \\n \\r
Generated by: https://openapi-generator.tech
OpenAPI Generator version: 3.1.1-SNAPSHOT
OpenAPI Generator version: 4.0.0-SNAPSHOT
=end

Expand Down Expand Up @@ -212,5 +212,47 @@ def auth_settings
},
}
end

# Returns an array of Server setting
def server_settings
[
{
url: "//petstore.swagger.io */ ' " =end -- \r\n \n \r/v2 */ ' " =end -- \r\n \n \r",
description: "No descriptoin provided",
}
]
end
# Returns URL based on server settings
#
# @param index array index of the server settings
# @param variables hash of variable and the corresponding value
def server_url(index, variables = {})
servers = server_settings
# check array index out of bound
if (index < 0 || index >= servers.size)
fail ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
end
server = servers[index]
url = server[:url]
# go through variable and assign a value
server[:variables].each do |name, variable|
if variables.key?(name)
if (server[:variables][name][:enum_values].include? variables[name])
url.gsub! "{" + name.to_s + "}", variables[name]
else
fail ArgumentError, "The variable `#{name}` in the server URL has invalid value #{variables[name]}. Must be #{server[:variables][name][:enum_values]}."
end
else
# use default value
url.gsub! "{" + name.to_s + "}", server[:variables][name][:default_value]
end
end

url
end
end
end
Expand Up @@ -6,7 +6,7 @@
OpenAPI spec version: 1.0.0 */ &#39; \&quot; &#x3D;_end -- \\r\\n \\n \\r
Contact: something@something.abc */ ' \" =_end -- \\r\\n \\n \\r
Generated by: https://openapi-generator.tech
OpenAPI Generator version: 3.1.1-SNAPSHOT
OpenAPI Generator version: 4.0.0-SNAPSHOT
=end

Expand Down Expand Up @@ -78,6 +78,13 @@ def hash
[_return].hash
end

# Builds the object from hash
# @param [Hash] attributes Model attributes in the form of hash
# @return [Object] Returns the model itself
def self.build_from_hash(attributes)
new.build_from_hash(attributes)
end

# Builds the object from hash
# @param [Hash] attributes Model attributes in the form of hash
# @return [Object] Returns the model itself
Expand Down Expand Up @@ -135,8 +142,7 @@ def _deserialize(type, value)
end
end
else # model
temp_model = Petstore.const_get(type).new
temp_model.build_from_hash(value)
Petstore.const_get(type).build_from_hash(value)
end
end

Expand Down Expand Up @@ -181,5 +187,7 @@ def _to_hash(value)
value
end
end

end

end
Expand Up @@ -6,7 +6,7 @@
OpenAPI spec version: 1.0.0 */ &#39; \&quot; &#x3D;_end -- \\r\\n \\n \\r
Contact: something@something.abc */ ' \" =_end -- \\r\\n \\n \\r
Generated by: https://openapi-generator.tech
OpenAPI Generator version: 3.1.1-SNAPSHOT
OpenAPI Generator version: 4.0.0-SNAPSHOT
=end

Expand Down
Expand Up @@ -8,7 +8,7 @@
OpenAPI spec version: 1.0.0 */ &#39; \&quot; &#x3D;_end -- \\r\\n \\n \\r
Contact: something@something.abc */ ' \" =_end -- \\r\\n \\n \\r
Generated by: https://openapi-generator.tech
OpenAPI Generator version: 3.1.1-SNAPSHOT
OpenAPI Generator version: 4.0.0-SNAPSHOT
=end

Expand Down
Expand Up @@ -95,7 +95,7 @@ def valid?
def just_symbol=(just_symbol)
validator = EnumAttributeValidator.new('String', ['>=', '$'])
unless validator.valid?(just_symbol)
fail ArgumentError, 'invalid value for "just_symbol", must be one of #{validator.allowable_values}.'
fail ArgumentError, "invalid value for \"just_symbol\", must be one of #{validator.allowable_values}."
end
@just_symbol = just_symbol
end
Expand Down
8 changes: 4 additions & 4 deletions samples/client/petstore/ruby/lib/petstore/models/enum_test.rb
Expand Up @@ -128,7 +128,7 @@ def valid?
def enum_string=(enum_string)
validator = EnumAttributeValidator.new('String', ['UPPER', 'lower', ''])
unless validator.valid?(enum_string)
fail ArgumentError, 'invalid value for "enum_string", must be one of #{validator.allowable_values}.'
fail ArgumentError, "invalid value for \"enum_string\", must be one of #{validator.allowable_values}."
end
@enum_string = enum_string
end
Expand All @@ -138,7 +138,7 @@ def enum_string=(enum_string)
def enum_string_required=(enum_string_required)
validator = EnumAttributeValidator.new('String', ['UPPER', 'lower', ''])
unless validator.valid?(enum_string_required)
fail ArgumentError, 'invalid value for "enum_string_required", must be one of #{validator.allowable_values}.'
fail ArgumentError, "invalid value for \"enum_string_required\", must be one of #{validator.allowable_values}."
end
@enum_string_required = enum_string_required
end
Expand All @@ -148,7 +148,7 @@ def enum_string_required=(enum_string_required)
def enum_integer=(enum_integer)
validator = EnumAttributeValidator.new('Integer', ['1', '-1'])
unless validator.valid?(enum_integer)
fail ArgumentError, 'invalid value for "enum_integer", must be one of #{validator.allowable_values}.'
fail ArgumentError, "invalid value for \"enum_integer\", must be one of #{validator.allowable_values}."
end
@enum_integer = enum_integer
end
Expand All @@ -158,7 +158,7 @@ def enum_integer=(enum_integer)
def enum_number=(enum_number)
validator = EnumAttributeValidator.new('Float', ['1.1', '-1.2'])
unless validator.valid?(enum_number)
fail ArgumentError, 'invalid value for "enum_number", must be one of #{validator.allowable_values}.'
fail ArgumentError, "invalid value for \"enum_number\", must be one of #{validator.allowable_values}."
end
@enum_number = enum_number
end
Expand Down
2 changes: 1 addition & 1 deletion samples/client/petstore/ruby/lib/petstore/models/order.rb
Expand Up @@ -128,7 +128,7 @@ def valid?
def status=(status)
validator = EnumAttributeValidator.new('String', ['placed', 'approved', 'delivered'])
unless validator.valid?(status)
fail ArgumentError, 'invalid value for "status", must be one of #{validator.allowable_values}.'
fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
end
@status = status
end
Expand Down
2 changes: 1 addition & 1 deletion samples/client/petstore/ruby/lib/petstore/models/pet.rb
Expand Up @@ -140,7 +140,7 @@ def valid?
def status=(status)
validator = EnumAttributeValidator.new('String', ['available', 'pending', 'sold'])
unless validator.valid?(status)
fail ArgumentError, 'invalid value for "status", must be one of #{validator.allowable_values}.'
fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
end
@status = status
end
Expand Down
Expand Up @@ -95,7 +95,7 @@ def valid?
def just_symbol=(just_symbol)
validator = EnumAttributeValidator.new('String', ['>=', '$'])
unless validator.valid?(just_symbol)
fail ArgumentError, 'invalid value for "just_symbol", must be one of #{validator.allowable_values}.'
fail ArgumentError, "invalid value for \"just_symbol\", must be one of #{validator.allowable_values}."
end
@just_symbol = just_symbol
end
Expand Down

0 comments on commit a1ec104

Please sign in to comment.