[Ruby] Fix Operation Servers (#16144)

* [Ruby] Fix Operation Servers

* user `server_index` instead of `index`

* use nil as default

* add tests

* revert tests

* add tests to custom file

* add test file to ruby-faraday
This commit is contained in:
Cameron Koegel
2023-07-25 00:18:23 -04:00
committed by GitHub
parent 66155d622c
commit 54d996732f
9 changed files with 213 additions and 49 deletions

View File

@@ -152,7 +152,7 @@ module Petstore
@scheme = 'http'
@host = 'petstore.swagger.io'
@base_path = '/v2'
@server_index = 0
@server_index = nil
@server_operation_index = {}
@server_variables = {}
@server_operation_variables = {}
@@ -200,10 +200,12 @@ module Petstore
# Returns base URL for specified operation based on server settings
def base_url(operation = nil)
index = server_operation_index[operation]
return "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') if index == nil
server_url(index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
if operation_server_settings.key?(operation) then
index = server_operation_index.fetch(operation, server_index)
server_url(index.nil? ? 0 : index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
else
server_index.nil? ? "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') : server_url(server_index, server_variables, nil)
end
end
# Gets API key (with prefix if set).
@@ -258,8 +260,8 @@ module Petstore
servers = server_settings if servers == nil
# 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}"
if (index.nil? || index < 0 || index >= servers.size)
fail ArgumentError, "Invalid index #{index} when selecting the server. Must not be nil and must be less than #{servers.size}"
end
server = servers[index]