diff --git a/modules/swagger-codegen/src/main/resources/ruby/swagger/request.mustache b/modules/swagger-codegen/src/main/resources/ruby/swagger/request.mustache
index decf7aa7708..8f07e5ab66c 100644
--- a/modules/swagger-codegen/src/main/resources/ruby/swagger/request.mustache
+++ b/modules/swagger-codegen/src/main/resources/ruby/swagger/request.mustache
@@ -120,6 +120,7 @@ module {{moduleName}}
request_options = {
:method => self.http_method,
:headers => self.headers,
+ :params => self.params,
:ssl_verifypeer => Swagger.configuration.verify_ssl,
:cainfo => Swagger.configuration.ssl_ca_cert,
:verbose => Swagger.configuration.debug
diff --git a/samples/client/petstore/ruby/Gemfile.lock b/samples/client/petstore/ruby/Gemfile.lock
index e9e03f10b77..1b69e10f1fd 100644
--- a/samples/client/petstore/ruby/Gemfile.lock
+++ b/samples/client/petstore/ruby/Gemfile.lock
@@ -2,7 +2,6 @@ PATH
remote: .
specs:
swagger_client (1.0.0)
- addressable (~> 2.2, >= 2.2.4)
json (~> 1.4, >= 1.4.6)
typhoeus (~> 0.2, >= 0.2.1)
diff --git a/samples/client/petstore/ruby/lib/swagger_client.rb b/samples/client/petstore/ruby/lib/swagger_client.rb
index 42380927f82..f91c8912d98 100644
--- a/samples/client/petstore/ruby/lib/swagger_client.rb
+++ b/samples/client/petstore/ruby/lib/swagger_client.rb
@@ -1,5 +1,4 @@
# Swagger common files
-require 'swagger_client/monkey'
require 'swagger_client/swagger'
require 'swagger_client/swagger/configuration'
require 'swagger_client/swagger/api_error'
diff --git a/samples/client/petstore/ruby/lib/swagger_client/api/pet_api.rb b/samples/client/petstore/ruby/lib/swagger_client/api/pet_api.rb
index 8ec023a6f77..4b3e6bb6a50 100644
--- a/samples/client/petstore/ruby/lib/swagger_client/api/pet_api.rb
+++ b/samples/client/petstore/ruby/lib/swagger_client/api/pet_api.rb
@@ -2,8 +2,6 @@ require "uri"
module SwaggerClient
class PetApi
- basePath = "http://petstore.swagger.io/v2"
- # apiInvoker = APIInvoker
# Update an existing pet
#
diff --git a/samples/client/petstore/ruby/lib/swagger_client/api/store_api.rb b/samples/client/petstore/ruby/lib/swagger_client/api/store_api.rb
index 7581c4d36d6..47e81d5af1c 100644
--- a/samples/client/petstore/ruby/lib/swagger_client/api/store_api.rb
+++ b/samples/client/petstore/ruby/lib/swagger_client/api/store_api.rb
@@ -2,8 +2,6 @@ require "uri"
module SwaggerClient
class StoreApi
- basePath = "http://petstore.swagger.io/v2"
- # apiInvoker = APIInvoker
# Returns pet inventories by status
# Returns a map of status codes to quantities
diff --git a/samples/client/petstore/ruby/lib/swagger_client/api/user_api.rb b/samples/client/petstore/ruby/lib/swagger_client/api/user_api.rb
index 48407491fba..7d91c0bfd3d 100644
--- a/samples/client/petstore/ruby/lib/swagger_client/api/user_api.rb
+++ b/samples/client/petstore/ruby/lib/swagger_client/api/user_api.rb
@@ -2,8 +2,6 @@ require "uri"
module SwaggerClient
class UserApi
- basePath = "http://petstore.swagger.io/v2"
- # apiInvoker = APIInvoker
# Create user
# This can only be done by the logged in user.
diff --git a/samples/client/petstore/ruby/lib/swagger_client/monkey.rb b/samples/client/petstore/ruby/lib/swagger_client/monkey.rb
deleted file mode 100644
index 0751d42ce63..00000000000
--- a/samples/client/petstore/ruby/lib/swagger_client/monkey.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-class Object
- unless Object.method_defined? :blank?
- def blank?
- respond_to?(:empty?) ? empty? : !self
- end
- end
-
- unless Object.method_defined? :present?
- def present?
- !blank?
- end
- end
-end
-
-class String
- unless String.method_defined? :underscore
- def underscore
- self.gsub(/::/, '/').
- gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
- gsub(/([a-z\d])([A-Z])/,'\1_\2').
- tr("-", "_").
- downcase
- end
- end
-
- unless String.method_defined? :camelize
- def camelize(first_letter_in_uppercase = true)
- if first_letter_in_uppercase != :lower
- self.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
- else
- self.to_s[0].chr.downcase + camelize(self)[1..-1]
- end
- end
- end
-end
-
-class Hash
- unless Hash.method_defined? :stringify_keys
- def stringify_keys
- inject({}) do |options, (key, value)|
- options[key.to_s] = value
- options
- end
- end
- end
-
- unless Hash.method_defined? :stringify_keys!
- def stringify_keys!
- self.replace(self.stringify_keys)
- end
- end
-
- unless Hash.method_defined? :symbolize_keys
- def symbolize_keys
- inject({}) do |options, (key, value)|
- options[(key.to_sym rescue key) || key] = value
- options
- end
- end
- end
-
- unless Hash.method_defined? :symbolize_keys!
- def symbolize_keys!
- self.replace(self.symbolize_keys)
- end
- end
-
- unless Hash.method_defined? :symbolize_and_underscore_keys
- def symbolize_and_underscore_keys
- inject({}) do |options, (key, value)|
- options[(key.to_s.underscore.to_sym rescue key) || key] = value
- options
- end
- end
- end
-
- unless Hash.method_defined? :symbolize_and_underscore_keys!
- def symbolize_and_underscore_keys!
- self.replace(self.symbolize_and_underscore_keys)
- end
- end
-end
diff --git a/samples/client/petstore/ruby/lib/swagger_client/swagger.rb b/samples/client/petstore/ruby/lib/swagger_client/swagger.rb
index 285d92ae2c7..bf69f05b23a 100644
--- a/samples/client/petstore/ruby/lib/swagger_client/swagger.rb
+++ b/samples/client/petstore/ruby/lib/swagger_client/swagger.rb
@@ -37,7 +37,7 @@ module SwaggerClient
end
def authenticated?
- Swagger.configuration.auth_token.present?
+ !Swagger.configuration.auth_token.nil?
end
def de_authenticate
@@ -47,7 +47,7 @@ module SwaggerClient
def authenticate
return if Swagger.authenticated?
- if Swagger.configuration.username.blank? || Swagger.configuration.password.blank?
+ if Swagger.configuration.username.nil? || Swagger.configuration.password.nil?
raise ApiError, "Username and password are required to authenticate."
end
diff --git a/samples/client/petstore/ruby/lib/swagger_client/swagger/configuration.rb b/samples/client/petstore/ruby/lib/swagger_client/swagger/configuration.rb
index 50fe6a0bcc0..8811c44b4df 100644
--- a/samples/client/petstore/ruby/lib/swagger_client/swagger/configuration.rb
+++ b/samples/client/petstore/ruby/lib/swagger_client/swagger/configuration.rb
@@ -3,7 +3,7 @@ require 'logger'
module SwaggerClient
module Swagger
class Configuration
- attr_accessor :scheme, :host, :base_path, :user_agent, :format, :auth_token, :inject_format, :force_ending_format, :camelize_params
+ attr_accessor :scheme, :host, :base_path, :user_agent, :format, :auth_token, :inject_format, :force_ending_format
# Defines the username used with HTTP basic authentication.
#
@@ -69,7 +69,6 @@ module SwaggerClient
@user_agent = "ruby-swagger-#{Swagger::VERSION}"
@inject_format = false
@force_ending_format = false
- @camelize_params = true
@api_key = {}
@api_key_prefix = {}
diff --git a/samples/client/petstore/ruby/lib/swagger_client/swagger/request.rb b/samples/client/petstore/ruby/lib/swagger_client/swagger/request.rb
index df0987b0d22..8b0276d356a 100644
--- a/samples/client/petstore/ruby/lib/swagger_client/swagger/request.rb
+++ b/samples/client/petstore/ruby/lib/swagger_client/swagger/request.rb
@@ -1,15 +1,14 @@
+require 'uri'
+require 'typhoeus'
+
module SwaggerClient
module Swagger
class Request
- require 'uri'
- require 'addressable/uri'
- require 'typhoeus'
-
attr_accessor :host, :path, :format, :params, :body, :http_method, :headers, :form_params, :auth_names, :response
# All requests must have an HTTP method and a path
# Optionals parameters are :params, :headers, :body, :format, :host
- def initialize(http_method, path, attributes={})
+ def initialize(http_method, path, attributes = {})
attributes[:format] ||= Swagger.configuration.format
attributes[:params] ||= {}
@@ -27,11 +26,10 @@ module SwaggerClient
attributes[:headers].merge!({:auth_token => Swagger.configuration.auth_token})
end
- self.http_method = http_method.to_sym
+ self.http_method = http_method.to_sym.downcase
self.path = path
- attributes.each do |name, value|
- send("#{name.to_s.underscore.to_sym}=", value)
- end
+
+ attributes.each { |name, value| send "#{name}=", value }
update_params_for_auth!
end
@@ -53,26 +51,18 @@ module SwaggerClient
# Get API key (with prefix if set).
# @param [String] param_name the parameter name of API key auth
def get_api_key_with_prefix(param_name)
- if Swagger.configuration.api_key_prefix[param_name].present?
+ if Swagger.configuration.api_key_prefix[param_name]
"#{Swagger.configuration.api_key_prefix[param_name]} #{Swagger.configuration.api_key[param_name]}"
else
Swagger.configuration.api_key[param_name]
end
end
- # Construct a base URL
+ # Construct the request URL.
def url(options = {})
- u = Addressable::URI.new(
- :scheme => Swagger.configuration.scheme,
- :host => Swagger.configuration.host,
- :path => self.interpreted_path,
- :query => self.query_string.sub(/\?/, '')
- ).to_s
-
- # Drop trailing question mark, if present
- u.sub! /\?$/, ''
-
- u
+ _path = self.interpreted_path
+ _path = "/#{_path}" unless _path.start_with?('/')
+ "#{Swagger.configuration.scheme}://#{Swagger.configuration.host}#{_path}"
end
# Iterate over the params hash, injecting any path values into the path string
@@ -103,18 +93,6 @@ module SwaggerClient
URI.encode [Swagger.configuration.base_path, p].join("/").gsub(/\/+/, '/')
end
- # Massage the request body into a state of readiness
- # If body is a hash, camelize all keys then convert to a json string
- def body=(value)
- if value.is_a?(Hash)
- value = value.inject({}) do |memo, (k,v)|
- memo[k.to_s.camelize(:lower).to_sym] = v
- memo
- end
- end
- @body = value
- end
-
# If body is an object, JSONify it before making the actual request.
# For form parameters, remove empty value
def outgoing_body
@@ -137,70 +115,21 @@ module SwaggerClient
data
end
- # Construct a query string from the query-string-type params
- def query_string
- # Iterate over all params,
- # .. removing the ones that are part of the path itself.
- # .. stringifying values so Addressable doesn't blow up.
- query_values = {}
- self.params.each_pair do |key, value|
- next if self.path.include? "{#{key}}" # skip path params
- next if value.blank? && value.class != FalseClass # skip empties
- if Swagger.configuration.camelize_params
- key = key.to_s.camelize(:lower).to_sym
- end
- query_values[key] = value.to_s
- end
-
- # We don't want to end up with '?' as our query string
- # if there aren't really any params
- return "" if query_values.blank?
-
- # Addressable requires query_values to be set after initialization..
- qs = Addressable::URI.new
- qs.query_values = query_values
- qs.to_s
- end
-
def make
request_options = {
+ :method => self.http_method,
+ :headers => self.headers,
+ :params => self.params,
:ssl_verifypeer => Swagger.configuration.verify_ssl,
:cainfo => Swagger.configuration.ssl_ca_cert,
- :headers => self.headers.stringify_keys,
:verbose => Swagger.configuration.debug
}
- raw = case self.http_method.to_sym
- when :get,:GET
- Typhoeus::Request.get(
- self.url,
- request_options
- )
- when :post,:POST
- Typhoeus::Request.post(
- self.url,
- request_options.merge(:body => self.outgoing_body)
- )
-
- when :patch,:PATCH
- Typhoeus::Request.patch(
- self.url,
- request_options.merge(:body => self.outgoing_body)
- )
-
- when :put,:PUT
- Typhoeus::Request.put(
- self.url,
- request_options.merge(:body => self.outgoing_body)
- )
-
- when :delete,:DELETE
- Typhoeus::Request.delete(
- self.url,
- request_options.merge(:body => self.outgoing_body)
- )
+ if [:post, :patch, :put, :delete].include?(self.http_method)
+ request_options.update :body => self.outgoing_body
end
+ raw = Typhoeus::Request.new(self.url, request_options).run
@response = Response.new(raw)
if Swagger.configuration.debug
@@ -216,16 +145,17 @@ module SwaggerClient
:response_body => @response.body),
@response.status_message
end
+
@response
end
def response_code_pretty
- return unless @response.present?
+ return unless @response
@response.code.to_s
end
def response_headers_pretty
- return unless @response.present?
+ return unless @response
# JSON.pretty_generate(@response.headers).gsub(/\n/, '
') # <- This was for RestClient
@response.headers.gsub(/\n/, '
') # <- This is for Typhoeus
end
diff --git a/samples/client/petstore/ruby/lib/swagger_client/swagger/response.rb b/samples/client/petstore/ruby/lib/swagger_client/swagger/response.rb
index 61d899e1f3b..0df6c2e54cd 100644
--- a/samples/client/petstore/ruby/lib/swagger_client/swagger/response.rb
+++ b/samples/client/petstore/ruby/lib/swagger_client/swagger/response.rb
@@ -30,7 +30,7 @@ module SwaggerClient
#
# @param [String] return_type some examples: "User", "Array[User]", "Hash[String,Integer]"
def deserialize(return_type)
- return nil if body.blank?
+ return nil if body.nil? || body.empty?
# ensuring a default content type
content_type = raw.headers_hash['Content-Type'] || 'application/json'
@@ -106,9 +106,11 @@ module SwaggerClient
end
def pretty_body
- return unless body.present?
- case format
- when 'json' then JSON.pretty_generate(JSON.parse(body)).gsub(/\n/, '
')
+ return unless body
+ if format == 'json'
+ JSON.pretty_generate(JSON.parse(body)).gsub(/\n/, '
')
+ else
+ body
end
end
diff --git a/samples/client/petstore/ruby/spec/monkey_spec.rb b/samples/client/petstore/ruby/spec/monkey_spec.rb
deleted file mode 100644
index 71c04921f1a..00000000000
--- a/samples/client/petstore/ruby/spec/monkey_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'spec_helper'
-
-describe String do
-
- it "underscores" do
- "thisIsATest".underscore.should == "this_is_a_test"
- end
-
- it "camelizes" do
- "camel_toe".camelize.should == "CamelToe"
- end
-
- it "camelizes with leading minisculity" do
- "dromedary_larry".camelize(:lower).should == "dromedaryLarry"
- end
-
-end
-
-describe Hash do
-
- it "symbolizes keys" do
- h = {'a' => 1, :b => 2 }
- h.symbolize_keys.should be_a Hash
- h.symbolize_keys.keys.should == [:a, :b]
- end
-
- it "symbolizes and underscores keys" do
- h = {'assHat' => 1, :bargainBasement => 2 }
- h.symbolize_and_underscore_keys.should be_a Hash
- h.symbolize_and_underscore_keys.keys.should == [:ass_hat, :bargain_basement]
- end
-
-end
\ No newline at end of file
diff --git a/samples/client/petstore/ruby/spec/request_spec.rb b/samples/client/petstore/ruby/spec/request_spec.rb
index 49bbc5cdd1e..987a923547c 100644
--- a/samples/client/petstore/ruby/spec/request_spec.rb
+++ b/samples/client/petstore/ruby/spec/request_spec.rb
@@ -25,7 +25,7 @@ describe SwaggerClient::Swagger::Request do
it "allows params to be nil" do
@request = SwaggerClient::Swagger::Request.new(@default_http_method, @default_path, :params => nil)
- @request.query_string.should == ""
+ @request.params.should == {}
end
end
@@ -46,26 +46,8 @@ describe SwaggerClient::Swagger::Request do
describe "url" do
- it "constructs a query string" do
- @request.query_string.should == "?bar=2&foo=1"
- end
-
it "constructs a full url" do
- @request.url.should == "http://petstore.swagger.io/v2/pet.json/fancy?bar=2&foo=1"
- end
-
- end
-
- describe "body" do
-
- it "camelCases parameters" do
- @request = SwaggerClient::Swagger::Request.new(@default_http_method, @default_path, @default_params.merge({
- :body => {
- :bad_dog => 'bud',
- :goodDog => "dud"
- }
- }))
- @request.body.keys.should == [:badDog, :goodDog]
+ @request.url.should == "http://petstore.swagger.io/v2/pet.json/fancy"
end
end
@@ -90,36 +72,6 @@ describe SwaggerClient::Swagger::Request do
@request.url.should == "http://petstore.swagger.io/v2/word.xml/cat/entries"
end
- it "leaves path-bound params out of the query string" do
- @request = SwaggerClient::Swagger::Request.new(:get, "/word.{format}/{word}/entries", @default_params.merge({
- :params => {
- :word => "cat",
- :limit => 20
- }
- }))
- @request.query_string.should == "?limit=20"
- end
-
- it "returns a question-mark free (blank) query string if no query params are present" do
- @request = SwaggerClient::Swagger::Request.new(:get, "/word.{format}/{word}/entries", @default_params.merge({
- :params => {
- :word => "cat",
- }
- }))
- @request.query_string.should == ""
- end
-
- it "removes blank params" do
- @request = SwaggerClient::Swagger::Request.new(:get, "words/fancy", @default_params.merge({
- :params => {
- :word => "dog",
- :limit => "",
- :foo => "criminy"
- }
- }))
- @request.query_string.should == "?foo=criminy&word=dog"
- end
-
it "URI encodes the path" do
@request = SwaggerClient::Swagger::Request.new(:get, "word.{format}/bill gates/definitions", @default_params.merge({
:params => {
@@ -129,34 +81,6 @@ describe SwaggerClient::Swagger::Request do
@request.url.should =~ /word.json\/bill\%20gates\/definitions/
end
- it "converts numeric params to strings" do
- @request = SwaggerClient::Swagger::Request.new(@default_http_method, @default_path, @default_params.merge({
- :params => {
- :limit => 100
- }
- }))
-
- @request.interpreted_path.should_not be_nil
- @request.query_string.should =~ /\?limit=100/
- @request.url.should =~ /\?limit=100/
- end
-
- it "camelCases parameters" do
- @request = SwaggerClient::Swagger::Request.new(@default_http_method, @default_path, @default_params.merge({
- :params => {
- :bad_dog => 'bud',
- :goodDog => "dud"
- }
- }))
- @request.query_string.should == "?badDog=bud&goodDog=dud"
- end
-
- it "converts boolean values to their string representation" do
- params = {:stringy => "fish", :truthy => true, :falsey => false}
- @request = SwaggerClient::Swagger::Request.new(:get, 'fakeMethod', :params => params)
- @request.query_string.should == "?falsey=false&stringy=fish&truthy=true"
- end
-
end
describe "#update_params_for_auth!" do
diff --git a/samples/client/petstore/ruby/swagger_client.gemspec b/samples/client/petstore/ruby/swagger_client.gemspec
index c0d507b3c5b..bc09642eaf6 100644
--- a/samples/client/petstore/ruby/swagger_client.gemspec
+++ b/samples/client/petstore/ruby/swagger_client.gemspec
@@ -14,7 +14,6 @@ Gem::Specification.new do |s|
s.license = "Apache-2.0"
s.add_runtime_dependency 'typhoeus', '~> 0.2', '>= 0.2.1'
- s.add_runtime_dependency 'addressable', '~> 2.2', '>= 2.2.4'
s.add_runtime_dependency 'json', '~> 1.4', '>= 1.4.6'
s.add_development_dependency 'rspec', '~> 3.2', '>= 3.2.0'