class Rspeckled::Faraday::Middleware::CurlLogger

Public Class Methods

default_logger() click to toggle source
# File lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb, line 7
def self.default_logger
  require 'logger'

  ::Logger.new($stdout)
end
new(app, logger = nil, program_name = nil) click to toggle source
Calls superclass method
# File lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb, line 13
def initialize(app, logger = nil, program_name = nil)
  super(app)

  @logger       = logger || self.class.default_logger
  @program_name = program_name
end

Public Instance Methods

call(env) click to toggle source
Calls superclass method
# File lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb, line 20
def call(env)
  @logger.info(@program_name) do
    curl_output('request',
                "#{env[:method].upcase} #{env[:url]}",
                env[:request_headers],
                env[:body])
  end

  super
end
on_complete(env) click to toggle source
# File lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb, line 31
def on_complete(env)
  @logger.info(@program_name) do
    curl_output('response', "HTTP #{env[:status]}", env[:response_headers], env[:body])
  end
end

Private Instance Methods

colorize(string, color_code) click to toggle source
# File lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb, line 56
def colorize(string, color_code)
  "\e[#{color_code}m#{string}\e[0m"
end
curl_output(direction, summary, headers, body) click to toggle source
# File lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb, line 39
def curl_output(direction, summary, headers, body)
  directional_arrow = (direction == 'request') ? '>' : '<'
  color_code        = (direction == 'request') ? 32 : 33

  curl_formatted_headers = headers.map { |name, value|
    colorize("#{directional_arrow} #{name}: #{value}", color_code)
  }.join("\n")

  [
    '',
    colorize("#{directional_arrow} #{summary}", color_code),
    curl_formatted_headers,
    '',
    colorize(body, 37),
  ].join("\n")
end