class NxtHttpClient::Logger

Attributes

logger[R]

Public Class Methods

new(logger) click to toggle source
# File lib/nxt_http_client/logger.rb, line 3
def initialize(logger)
  @logger = logger
end

Public Instance Methods

call(client, request, _response_handler, fire) click to toggle source
# File lib/nxt_http_client/logger.rb, line 7
def call(client, request, _response_handler, fire)
  started_at = now
  error = nil
  result = nil

  options = {
    client: client,
    started_at: started_at,
    request: request
  }

  begin
    result = fire.call
  rescue => e
    error = e
    options.merge!(error: e)
  ensure
    finished_at = now
    options.merge!(
      finished_at: now,
      elapsed_time_in_milliseconds: finished_at - started_at,
      response: request.response,
      http_status: request.response&.code
    )
  end

  logger.call(options)
  raise error if error

  result
end

Private Instance Methods

now() click to toggle source
# File lib/nxt_http_client/logger.rb, line 43
def now
  Time.current.to_i * 1000
end