class ScoutApm::Instruments::HttpClient

Attributes

context[R]

Public Class Methods

new(context) click to toggle source
# File lib/scout_apm/instruments/http_client.rb, line 6
def initialize(context)
  @context = context
  @installed = false
end

Public Instance Methods

install() click to toggle source
# File lib/scout_apm/instruments/http_client.rb, line 19
def install
  if defined?(::HTTPClient)
    @installed = true

    logger.info "Instrumenting HTTPClient"

    ::HTTPClient.class_eval do
      include ScoutApm::Tracer

      def request_with_scout_instruments(*args, &block)

        method = args[0].to_s
        url = args[1]

        max_length = ScoutApm::Agent.instance.context.config.value('instrument_http_url_length')
        url = url && url.to_s[0..(max_length - 1)]

        self.class.instrument("HTTP", method, :desc => url) do
          request_without_scout_instruments(*args, &block)
        end
      end

      alias request_without_scout_instruments request
      alias request request_with_scout_instruments
    end
  end
end
installed?() click to toggle source
# File lib/scout_apm/instruments/http_client.rb, line 15
def installed?
  @installed
end
logger() click to toggle source
# File lib/scout_apm/instruments/http_client.rb, line 11
def logger
  context.logger
end
request_with_scout_instruments(*args, &block) click to toggle source
# File lib/scout_apm/instruments/http_client.rb, line 28
def request_with_scout_instruments(*args, &block)

  method = args[0].to_s
  url = args[1]

  max_length = ScoutApm::Agent.instance.context.config.value('instrument_http_url_length')
  url = url && url.to_s[0..(max_length - 1)]

  self.class.instrument("HTTP", method, :desc => url) do
    request_without_scout_instruments(*args, &block)
  end
end