class Atatus::Spies::HTTPSpy
@api private
Constants
- SUBTYPE
- TYPE
Public Instance Methods
install()
click to toggle source
# File lib/atatus/spies/http.rb, line 27 def install if defined?(::HTTP) && defined?(::HTTP::Client) ::HTTP::Client.class_eval do alias perform_without_apm perform def perform(req, options) unless (transaction = Atatus.current_transaction) return perform_without_apm(req, options) end method = req.verb.to_s.upcase host = req.uri.host destination = Atatus::Span::Context::Destination.from_uri(req.uri) context = Atatus::Span::Context.new( http: { url: req.uri, method: method }, destination: destination ) name = "#{method} #{host}" Atatus.with_span( name, TYPE, subtype: SUBTYPE, action: method, context: context ) do |span| trace_context = span&.trace_context || transaction.trace_context trace_context.apply_headers { |key, value| req[key] = value } result = perform_without_apm(req, options) if (http = span&.context&.http) http.status_code = result.status.to_s end result end end end end end
perform(req, options)
click to toggle source
# File lib/atatus/spies/http.rb, line 33 def perform(req, options) unless (transaction = Atatus.current_transaction) return perform_without_apm(req, options) end method = req.verb.to_s.upcase host = req.uri.host destination = Atatus::Span::Context::Destination.from_uri(req.uri) context = Atatus::Span::Context.new( http: { url: req.uri, method: method }, destination: destination ) name = "#{method} #{host}" Atatus.with_span( name, TYPE, subtype: SUBTYPE, action: method, context: context ) do |span| trace_context = span&.trace_context || transaction.trace_context trace_context.apply_headers { |key, value| req[key] = value } result = perform_without_apm(req, options) if (http = span&.context&.http) http.status_code = result.status.to_s end result end end