Module: OneApm::Agent::Instrumentation::TyphoeusTracing

Defined in:
lib/one_apm/inst/http_clients/typhoeus.rb

Constant Summary collapse

OA_EARLIEST_VERSION =
OneApm::VersionNumber.new("0.5.3")

Class Method Summary collapse

Class Method Details

.is_supported_version?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/one_apm/inst/http_clients/typhoeus.rb', line 53

def self.is_supported_version?
  OneApm::VersionNumber.new(Typhoeus::VERSION) >= OneApm::Agent::Instrumentation::TyphoeusTracing::OA_EARLIEST_VERSION
end

.request_is_hydra_enabled?(request) ⇒ Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/one_apm/inst/http_clients/typhoeus.rb', line 57

def self.request_is_hydra_enabled?(request)
  request.respond_to?(:hydra) && request.hydra
end

.trace(request) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/one_apm/inst/http_clients/typhoeus.rb', line 61

def self.trace(request)
  state = OneApm::TransactionState.tl_get
  if state.is_execution_traced? && !request_is_hydra_enabled?(request)
    wrapped_request = ::OneApm::Support::HTTPClients::TyphoeusHTTPRequest.new(request)
    t0 = Time.now
    segment = ::OneApm::Agent::CrossAppTracing.start_trace(state, t0, wrapped_request)
    callback = Proc.new do
      wrapped_response = ::OneApm::Support::HTTPClients::TyphoeusHTTPResponse.new(request.response)
      ::OneApm::Agent::CrossAppTracing.finish_trace(state, t0, segment, wrapped_request, wrapped_response)
    end
    request.on_complete.unshift(callback)
  end
rescue => e
  OneApm::Manager.logger.error("Exception during trace setup for Typhoeus request", e)
end