class Rooftop::DebugMiddleware

Public Class Methods

default_logger() click to toggle source
# File lib/rooftop/middleware/debug_middleware.rb, line 6
def self.default_logger
  require "logger"
  ::Logger.new(STDOUT)
end
new(app, logger = nil, progname = nil) click to toggle source

Public: Initialize a new Logger middleware.

app - A Faraday-compatible middleware stack or application. logger - A Logger-compatible object to which the log information will

be recorded.

progname - A String containing a program name to use when logging.

Returns a Logger instance.

Calls superclass method
# File lib/rooftop/middleware/debug_middleware.rb, line 20
def initialize(app, logger = nil, progname = nil)
  super(app)
  @logger = logger || self.class.default_logger
  @progname = progname
end

Public Instance Methods

call(env) click to toggle source
Calls superclass method
# File lib/rooftop/middleware/debug_middleware.rb, line 27
def call(env)
  if Rooftop.debug_requests
    @logger.info(@progname) { "#{env[:method].upcase} #{env[:url]}" }
    @logger.debug(@progname) { curl_output(env[:request_headers], env[:body]).inspect }
  end
  super
end
on_complete(env) click to toggle source
# File lib/rooftop/middleware/debug_middleware.rb, line 35
def on_complete(env)
  if Rooftop.debug_responses
    status = env[:status]
    log_response_status(@progname, status) { "HTTP #{status}" }
    @logger.debug(@progname) { curl_output(env[:response_headers], env[:body]).inspect }
  end
end

Private Instance Methods

curl_output(headers, body) click to toggle source
# File lib/rooftop/middleware/debug_middleware.rb, line 44
def curl_output(headers, body)
  string = headers.collect { |k,v| "#{k}: #{v}" }.join("\n")
  string + "\n\n#{body}"
end
log_response_status(progname, status, &block) click to toggle source
# File lib/rooftop/middleware/debug_middleware.rb, line 49
def log_response_status(progname, status, &block)
  case status
    when 200..399
      @logger.info(progname, &block)
    else
      @logger.warn(progname, &block)
  end
end