class OmiseGO::HTTPLogger

Constants

LABEL

Attributes

logger[R]

Public Class Methods

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

Public Instance Methods

log_request(request) click to toggle source
# File lib/omisego/http_logger.rb, line 11
def log_request(request)
  info(format_request(request))
end
log_response(response) click to toggle source
# File lib/omisego/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/omisego/http_logger.rb, line 48
def format_headers(headers)
  headers.map do |name, value|
    name = name.split('-').map(&:capitalize).join('-')

    if name == 'Authorization'
      "#{name}: [FILTERED]"
    else
      "#{name}: #{value}"
    end
  end.join("\n")
end
format_payload(payload) click to toggle source
# File lib/omisego/http_logger.rb, line 60
def format_payload(payload)
  payload.map { |key, value| "#{key}=#{value}" }.join('&')
end
format_request(request) click to toggle source
# File lib/omisego/http_logger.rb, line 27
def format_request(request)
  StringIO.open do |s|
    s.puts("#{LABEL} Request: #{request.method.to_s.upcase} #{request.path}")
    s.puts(format_headers(request.headers))
    s.puts
    s.puts(request.body) if request.body
    s.string
  end
end
format_response(response) click to toggle source
# File lib/omisego/http_logger.rb, line 37
def format_response(response)
  StringIO.open do |s|
    s.puts("#{LABEL} Response: HTTP/#{response.status}")
    s.puts(format_headers(response.headers))
    s.puts
    s.puts(response.body)

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

  @logger.info(message)
end