class Jess::HttpClient::LoggingDecorator

Wraps a Net::HTTP object to log all requests to a given Logger object.

Attributes

logger[R]

Public Class Methods

new(logger, http) click to toggle source
Calls superclass method
# File lib/jess/http_client/logging_decorator.rb, line 7
def initialize(logger, http)
  super(http)
  @logger = logger
end

Public Instance Methods

request(req) click to toggle source
Calls superclass method
# File lib/jess/http_client/logging_decorator.rb, line 12
def request(req)
  return super if logger.nil?

  log_request(req)
  response = super
  log_response(response, req.uri)
  response
rescue Error => e
  logger&.error(e.to_s)
  raise
end

Private Instance Methods

log_request(req) click to toggle source
# File lib/jess/http_client/logging_decorator.rb, line 28
def log_request(req)
  logger.debug { "#{req.method} #{req.uri}" }
end
log_response(response, uri) click to toggle source
# File lib/jess/http_client/logging_decorator.rb, line 32
def log_response(response, uri)
  logger.debug do
    "Received #{response_desc(response)} from #{uri}"
  end
end
response_desc(response) click to toggle source
# File lib/jess/http_client/logging_decorator.rb, line 38
def response_desc(response)
  content_type = response.content_type
  desc = ""
  desc << if response.body && response.body.length
            "#{response.body.length} bytes"
          else
            "response"
          end
  desc << " (#{content_type})" if content_type
  desc
end