class Omise::HTTPLogger

Constants

LABEL

Attributes

logger[R]

Public Class Methods

new(logger = nil) click to toggle source
# File lib/omise/http_logger.rb, line 5
def initialize(logger = nil)
  @logger = logger
end

Public Instance Methods

log_request(request) click to toggle source
# File lib/omise/http_logger.rb, line 11
def log_request(request)
  info(format_request(request))
end
log_response(response) click to toggle source
# File lib/omise/http_logger.rb, line 15
def log_response(response)
  info(format_response(response))
end

Private Instance Methods

format_headers(headers) click to toggle source
# File lib/omise/http_logger.rb, line 51
def format_headers(headers)
  headers.map { |name, value| "#{name}: #{value}" }.join("\n")
end
format_payload(payload) click to toggle source
# File lib/omise/http_logger.rb, line 55
def format_payload(payload)
  payload.map { |key, value| "#{key}=#{value}" }.join("&")
end
format_request(request) click to toggle source
# File lib/omise/http_logger.rb, line 27
def format_request(request)
  StringIO.open do |s|
    s.puts("#{LABEL} Request: #{request.method.to_s.upcase} #{request.url}")
    s.puts(format_headers(request.processed_headers))
    s.puts
    s.puts(format_payload(request.args[:payload])) if request.args[:payload]

    s.string
  end
end
format_response(response) click to toggle source
# File lib/omise/http_logger.rb, line 38
def format_response(response)
  net_http = response.net_http_res

  StringIO.open do |s|
    s.puts("#{LABEL} Response: HTTP/#{net_http.http_version} #{net_http.code} #{net_http.message}")
    s.puts(format_headers(net_http.each_capitalized))
    s.puts
    s.puts(response.body)

    s.string
  end
end
info(message) click to toggle source
# File lib/omise/http_logger.rb, line 21
def info(message)
  return unless @logger

  @logger.info(message)
end