diff --git a/modules/swagger-codegen/src/main/resources/ruby/swagger.mustache b/modules/swagger-codegen/src/main/resources/ruby/swagger.mustache index 239e3cfac26..21c4e8cd04e 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/swagger.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/swagger.mustache @@ -1,6 +1,3 @@ -require 'logger' -require 'json' - module {{moduleName}} module Swagger class << self @@ -25,8 +22,7 @@ module {{moduleName}} def configure yield(configuration) if block_given? - # Configure logger. Default to use Rails - self.logger ||= configuration.logger || (defined?(Rails) ? Rails.logger : Logger.new(STDOUT)) + self.logger = configuration.logger # remove :// from scheme configuration.scheme.sub!(/:\/\//, '') diff --git a/modules/swagger-codegen/src/main/resources/ruby/swagger/configuration.mustache b/modules/swagger-codegen/src/main/resources/ruby/swagger/configuration.mustache index e9a8af9c162..485bcb3cf81 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/swagger/configuration.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/swagger/configuration.mustache @@ -1,7 +1,11 @@ +require 'logger' + module {{moduleName}} module Swagger class Configuration - attr_accessor :format, :api_key, :api_key_prefix, :username, :password, :auth_token, :scheme, :host, :base_path, :user_agent, :logger, :inject_format, :force_ending_format, :camelize_params, :user_agent, :verify_ssl + attr_accessor :format, :api_key, :api_key_prefix, :username, :password, :auth_token, + :scheme, :host, :base_path, :user_agent, :debug, :logger, :inject_format, + :force_ending_format, :camelize_params, :user_agent, :verify_ssl # Defaults go in here.. def initialize @@ -23,6 +27,12 @@ module {{moduleName}} # Note: do NOT set it to false in production code, otherwise you would # face multiple types of cryptographic attacks @verify_ssl = true + + # whether to enable debugging + @debug = false + + # configure logger, default to logger of Rails (if in Rails) or STDOUT + @logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT) end end end 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 99b58d58be8..70eb319ed95 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/swagger/request.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/swagger/request.mustache @@ -125,12 +125,17 @@ module {{moduleName}} data.each do |key, value| data[key] = value.to_s if value && !value.is_a?(File) # remove emtpy form parameter end - data elsif @body # http body is JSON - @body.is_a?(String) ? @body : @body.to_json + data = @body.is_a?(String) ? @body : @body.to_json else - nil + data = nil end + + if Swagger.configuration.debug + Swagger.logger.debug "HTTP request body param ~BEGIN~\n#{data}\n~END~\n" + end + + data end # Construct a query string from the query-string-type params @@ -159,13 +164,10 @@ module {{moduleName}} end def make - #TODO use configuration setting to determine if debugging - #logger = Logger.new STDOUT - #logger.debug self.url - request_options = { :ssl_verifypeer => Swagger.configuration.verify_ssl, - :headers => self.headers.stringify_keys + :headers => self.headers.stringify_keys, + :verbose => Swagger.configuration.debug } response = case self.http_method.to_sym when :get,:GET @@ -198,6 +200,11 @@ module {{moduleName}} request_options.merge(:body => self.outgoing_body) ) end + + if Swagger.configuration.debug + Swagger.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n" + end + Response.new(response) end diff --git a/samples/client/petstore/ruby/README.md b/samples/client/petstore/ruby/README.md index 2a15c1661cc..06ba93a5abc 100644 --- a/samples/client/petstore/ruby/README.md +++ b/samples/client/petstore/ruby/README.md @@ -43,9 +43,11 @@ ruby -Ilib script.rb require 'swagger_client' SwaggerClient::Swagger.configure do |config| - config.api_key = 'special-key' + config.api_key['api_key'] = 'special-key' config.host = 'petstore.swagger.io' config.base_path = '/v2' + # enable debugging (default is false) + config.debug = true end ``` diff --git a/samples/client/petstore/ruby/lib/swagger_client/swagger.rb b/samples/client/petstore/ruby/lib/swagger_client/swagger.rb index 477ec89ba81..e6c1ca51096 100644 --- a/samples/client/petstore/ruby/lib/swagger_client/swagger.rb +++ b/samples/client/petstore/ruby/lib/swagger_client/swagger.rb @@ -1,6 +1,3 @@ -require 'logger' -require 'json' - module SwaggerClient module Swagger class << self @@ -25,8 +22,7 @@ module SwaggerClient def configure yield(configuration) if block_given? - # Configure logger. Default to use Rails - self.logger ||= configuration.logger || (defined?(Rails) ? Rails.logger : Logger.new(STDOUT)) + self.logger = configuration.logger # remove :// from scheme configuration.scheme.sub!(/:\/\//, '') 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 a2d4fe0e291..b4d8b33d90d 100644 --- a/samples/client/petstore/ruby/lib/swagger_client/swagger/configuration.rb +++ b/samples/client/petstore/ruby/lib/swagger_client/swagger/configuration.rb @@ -1,7 +1,11 @@ +require 'logger' + module SwaggerClient module Swagger class Configuration - attr_accessor :format, :api_key, :api_key_prefix, :username, :password, :auth_token, :scheme, :host, :base_path, :user_agent, :logger, :inject_format, :force_ending_format, :camelize_params, :user_agent, :verify_ssl + attr_accessor :format, :api_key, :api_key_prefix, :username, :password, :auth_token, + :scheme, :host, :base_path, :user_agent, :debug, :logger, :inject_format, + :force_ending_format, :camelize_params, :user_agent, :verify_ssl # Defaults go in here.. def initialize @@ -23,6 +27,12 @@ module SwaggerClient # Note: do NOT set it to false in production code, otherwise you would # face multiple types of cryptographic attacks @verify_ssl = true + + # whether to enable debugging + @debug = false + + # configure logger, default to logger of Rails (if in Rails) or STDOUT + @logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT) end end end 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 4cd5d84b0b9..2e669df60cb 100644 --- a/samples/client/petstore/ruby/lib/swagger_client/swagger/request.rb +++ b/samples/client/petstore/ruby/lib/swagger_client/swagger/request.rb @@ -124,12 +124,17 @@ module SwaggerClient data.each do |key, value| data[key] = value.to_s if value && !value.is_a?(File) # remove emtpy form parameter end - data elsif @body # http body is JSON - @body.is_a?(String) ? @body : @body.to_json + data = @body.is_a?(String) ? @body : @body.to_json else - nil + data = nil end + + if Swagger.configuration.debug + Swagger.logger.debug "HTTP request body param ~BEGIN~\n#{data}\n~END~\n" + end + + data end # Construct a query string from the query-string-type params @@ -158,13 +163,10 @@ module SwaggerClient end def make - #TODO use configuration setting to determine if debugging - #logger = Logger.new STDOUT - #logger.debug self.url - request_options = { :ssl_verifypeer => Swagger.configuration.verify_ssl, - :headers => self.headers.stringify_keys + :headers => self.headers.stringify_keys, + :verbose => Swagger.configuration.debug } response = case self.http_method.to_sym when :get,:GET @@ -197,6 +199,11 @@ module SwaggerClient request_options.merge(:body => self.outgoing_body) ) end + + if Swagger.configuration.debug + Swagger.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n" + end + Response.new(response) end