Sha256: 5c795aa736670124f37dc56fb150d7ae0f1baa8dc4b09249515d876a3d9040fb

Contents?: true

Size: 1.26 KB

Versions: 13

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

module  Rspeckled
module  Faraday
module  Middleware
class   CurlLogger < ::Faraday::Response::Middleware
  def self.default_logger
    require 'logger'

    ::Logger.new(STDOUT)
  end

  def initialize(app, logger = nil, program_name = nil)
    super(app)

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

  def call(env)
    @logger.info(@program_name) { curl_output('request', "#{env[:method].upcase} #{env[:url]}", env[:request_headers], env[:body]) }

    super
  end

  def on_complete(env)
    @logger.info(@program_name) { curl_output('response', "HTTP #{env[:status]}", env[:response_headers], env[:body]) }
  end

  private

  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

  def colorize(string, color_code)
    "\e[#{color_code}m#{string}\e[0m"
  end
end
end
end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
rspeckled-2.0.1 lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb
rspeckled-2.0.0 lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb
rspeckled-1.4.0 lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb
rspeckled-1.3.1 lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb
rspeckled-1.3.0 lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb
rspeckled-1.2.1 lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb
rspeckled-1.2.0 lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb
rspeckled-1.1.3 lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb
rspeckled-1.1.2 lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb
rspeckled-1.1.1 lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb
rspeckled-1.1.0 lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb
rspeckled-1.0.5 lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb
rspeckled-1.0.4 lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb