class FaradayMiddleware::LoudLogger
@private
Public Class Methods
new(app, options = {})
click to toggle source
Calls superclass method
# File lib/faraday/loud_logger.rb, line 10 def initialize(app, options = {}) super @app = app @logger = options.fetch(:logger) do require 'logger' ::Logger.new($stdout) end end
Public Instance Methods
call(env)
click to toggle source
# File lib/faraday/loud_logger.rb, line 19 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 58 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 33 def filter(output) output end
format_headers(headers)
click to toggle source
# File lib/faraday/loud_logger.rb, line 70 def format_headers(headers) length = headers.map { |k, _| 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 50 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 37 def request_info(env) format('Started %<method>s request to: %<url>s', method: env[:method].to_s.upcase, url: filter(env[:url])) end
response_debug(env)
click to toggle source
# File lib/faraday/loud_logger.rb, line 54 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 41 def response_info(env, response_time) format( 'Response from %<method>s; Status: %<status>d; Time: %<time>.1fms', method: env[:method].to_s.upcase, status: env[:status], time: (response_time * 1_000.0) ) end