Add debugging switch to Ruby generator

This commit is contained in:
xhh 2015-06-20 12:16:53 +08:00
parent b803895750
commit 229ea93627
7 changed files with 57 additions and 29 deletions

View File

@ -1,6 +1,3 @@
require 'logger'
require 'json'
module {{moduleName}} module {{moduleName}}
module Swagger module Swagger
class << self class << self
@ -25,8 +22,7 @@ module {{moduleName}}
def configure def configure
yield(configuration) if block_given? yield(configuration) if block_given?
# Configure logger. Default to use Rails self.logger = configuration.logger
self.logger ||= configuration.logger || (defined?(Rails) ? Rails.logger : Logger.new(STDOUT))
# remove :// from scheme # remove :// from scheme
configuration.scheme.sub!(/:\/\//, '') configuration.scheme.sub!(/:\/\//, '')

View File

@ -1,7 +1,11 @@
require 'logger'
module {{moduleName}} module {{moduleName}}
module Swagger module Swagger
class Configuration 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.. # Defaults go in here..
def initialize def initialize
@ -23,6 +27,12 @@ module {{moduleName}}
# Note: do NOT set it to false in production code, otherwise you would # Note: do NOT set it to false in production code, otherwise you would
# face multiple types of cryptographic attacks # face multiple types of cryptographic attacks
@verify_ssl = true @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 end
end end

View File

@ -125,12 +125,17 @@ module {{moduleName}}
data.each do |key, value| data.each do |key, value|
data[key] = value.to_s if value && !value.is_a?(File) # remove emtpy form parameter data[key] = value.to_s if value && !value.is_a?(File) # remove emtpy form parameter
end end
data
elsif @body # http body is JSON elsif @body # http body is JSON
@body.is_a?(String) ? @body : @body.to_json data = @body.is_a?(String) ? @body : @body.to_json
else else
nil data = nil
end end
if Swagger.configuration.debug
Swagger.logger.debug "HTTP request body param ~BEGIN~\n#{data}\n~END~\n"
end
data
end end
# Construct a query string from the query-string-type params # Construct a query string from the query-string-type params
@ -159,13 +164,10 @@ module {{moduleName}}
end end
def make def make
#TODO use configuration setting to determine if debugging
#logger = Logger.new STDOUT
#logger.debug self.url
request_options = { request_options = {
:ssl_verifypeer => Swagger.configuration.verify_ssl, :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 response = case self.http_method.to_sym
when :get,:GET when :get,:GET
@ -198,6 +200,11 @@ module {{moduleName}}
request_options.merge(:body => self.outgoing_body) request_options.merge(:body => self.outgoing_body)
) )
end end
if Swagger.configuration.debug
Swagger.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
end
Response.new(response) Response.new(response)
end end

View File

@ -43,9 +43,11 @@ ruby -Ilib script.rb
require 'swagger_client' require 'swagger_client'
SwaggerClient::Swagger.configure do |config| SwaggerClient::Swagger.configure do |config|
config.api_key = 'special-key' config.api_key['api_key'] = 'special-key'
config.host = 'petstore.swagger.io' config.host = 'petstore.swagger.io'
config.base_path = '/v2' config.base_path = '/v2'
# enable debugging (default is false)
config.debug = true
end end
``` ```

View File

@ -1,6 +1,3 @@
require 'logger'
require 'json'
module SwaggerClient module SwaggerClient
module Swagger module Swagger
class << self class << self
@ -25,8 +22,7 @@ module SwaggerClient
def configure def configure
yield(configuration) if block_given? yield(configuration) if block_given?
# Configure logger. Default to use Rails self.logger = configuration.logger
self.logger ||= configuration.logger || (defined?(Rails) ? Rails.logger : Logger.new(STDOUT))
# remove :// from scheme # remove :// from scheme
configuration.scheme.sub!(/:\/\//, '') configuration.scheme.sub!(/:\/\//, '')

View File

@ -1,7 +1,11 @@
require 'logger'
module SwaggerClient module SwaggerClient
module Swagger module Swagger
class Configuration 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.. # Defaults go in here..
def initialize def initialize
@ -23,6 +27,12 @@ module SwaggerClient
# Note: do NOT set it to false in production code, otherwise you would # Note: do NOT set it to false in production code, otherwise you would
# face multiple types of cryptographic attacks # face multiple types of cryptographic attacks
@verify_ssl = true @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 end
end end

View File

@ -124,12 +124,17 @@ module SwaggerClient
data.each do |key, value| data.each do |key, value|
data[key] = value.to_s if value && !value.is_a?(File) # remove emtpy form parameter data[key] = value.to_s if value && !value.is_a?(File) # remove emtpy form parameter
end end
data
elsif @body # http body is JSON elsif @body # http body is JSON
@body.is_a?(String) ? @body : @body.to_json data = @body.is_a?(String) ? @body : @body.to_json
else else
nil data = nil
end end
if Swagger.configuration.debug
Swagger.logger.debug "HTTP request body param ~BEGIN~\n#{data}\n~END~\n"
end
data
end end
# Construct a query string from the query-string-type params # Construct a query string from the query-string-type params
@ -158,13 +163,10 @@ module SwaggerClient
end end
def make def make
#TODO use configuration setting to determine if debugging
#logger = Logger.new STDOUT
#logger.debug self.url
request_options = { request_options = {
:ssl_verifypeer => Swagger.configuration.verify_ssl, :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 response = case self.http_method.to_sym
when :get,:GET when :get,:GET
@ -197,6 +199,11 @@ module SwaggerClient
request_options.merge(:body => self.outgoing_body) request_options.merge(:body => self.outgoing_body)
) )
end end
if Swagger.configuration.debug
Swagger.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
end
Response.new(response) Response.new(response)
end end