class Yabeda::HttpRequests::Sniffer

Middleware for sniffer gem

Public Instance Methods

request(data_item) { || ... } click to toggle source
# File lib/yabeda/http_requests/sniffer.rb, line 7
def request(data_item)
  yield
  Yabeda.http_request_total.increment(
    {
      host: data_item.request.host,
      port: data_item.request.port,
      method: data_item.request.method
    }
  )
end
response(data_item) { || ... } click to toggle source
# File lib/yabeda/http_requests/sniffer.rb, line 18
def response(data_item)
  yield
  log_http_response_total(data_item)
  log_http_response_duration(data_item)
end

Private Instance Methods

duration_in_milliseconds(data_item) click to toggle source
# File lib/yabeda/http_requests/sniffer.rb, line 50
def duration_in_milliseconds(data_item)
  seconds = data_item.response&.timing
  return nil if seconds.nil?

  (seconds * 1000).round
end
log_http_response_duration(data_item) click to toggle source
# File lib/yabeda/http_requests/sniffer.rb, line 37
def log_http_response_duration(data_item)
  labels = {
    host: data_item.request.host,
    port: data_item.request.port,
    method: data_item.request.method,
    status: data_item.response.status
  }

  Yabeda.http_response_duration.measure(
    labels, duration_in_milliseconds(data_item)
  )
end
log_http_response_total(data_item) click to toggle source
# File lib/yabeda/http_requests/sniffer.rb, line 26
def log_http_response_total(data_item)
  Yabeda.http_response_total.increment(
    {
      host: data_item.request.host,
      port: data_item.request.port,
      method: data_item.request.method,
      status: data_item.response.status
    }
  )
end