class FaradayMiddleware::LoudLogger

@private

Public Class Methods

new(app, options = {}) click to toggle source
# File lib/faraday/loud_logger.rb, line 13
def initialize(app, options = {})
  @app = app
  @logger = options.fetch(:logger) {
    require 'logger'
    ::Logger.new($stdout)
  }
end

Public Instance Methods

call(env) click to toggle source
# File lib/faraday/loud_logger.rb, line 21
def call(env)
  start_time = Time.now
  info  { request_info(env) }
  debug { request_debug(env) }
  @app.call(env).on_complete do
    end_time = Time.now
    response_time = end_time - start_time
    info  { response_info(env, response_time) }
    debug { response_debug(env) }
  end
end

Private Instance Methods

debug_message(name, headers, body) click to toggle source
# File lib/faraday/loud_logger.rb, line 60
      def debug_message(name, headers, body)
        <<-MESSAGE.gsub(/^ +([^ ])/m, '\\1')
        #{name} Headers:
        ----------------
        #{format_headers(headers)}

        #{name} Body:
        -------------
        #{filter(body)}
        MESSAGE
      end
filter(output) click to toggle source
# File lib/faraday/loud_logger.rb, line 35
def filter(output)
  if ENV['INSTAGRAM_GEM_REDACT']
    output = output.to_s.gsub(/client_id=[a-zA-Z0-9]*/,'client_id=[CLIENT-ID]')
    output = output.to_s.gsub(/access_token=[a-zA-Z0-9]*/,'access_token=[ACCESS-TOKEN]')
  else
    output
  end
end
format_headers(headers) click to toggle source
# File lib/faraday/loud_logger.rb, line 72
def format_headers(headers)
  length = headers.map {|k,v| k.to_s.size }.max
  headers.map { |name, value| "#{name.to_s.ljust(length)} : #{filter(value)}" }.join("\n")
end
request_debug(env) click to toggle source
# File lib/faraday/loud_logger.rb, line 52
def request_debug(env)
  debug_message("Request", env[:request_headers], env[:body])
end
request_info(env) click to toggle source
# File lib/faraday/loud_logger.rb, line 44
def request_info(env)
  "Started %s request to: %s" % [ env[:method].to_s.upcase, filter(env[:url]) ]
end
response_debug(env) click to toggle source
# File lib/faraday/loud_logger.rb, line 56
def response_debug(env)
  debug_message("Response", env[:response_headers], env[:body])
end
response_info(env, response_time) click to toggle source
# File lib/faraday/loud_logger.rb, line 48
def response_info(env, response_time)
  "Response from %s; Status: %d; Time: %.1fms" % [ filter(env[:url]), env[:status], (response_time * 1_000.0) ]
end