Sha256: 596e6f66dade5220387cd35b6c0c9725b9b604c12c8a0a4314afca9969595d2e
Contents?: true
Size: 1.38 KB
Versions: 1
Compression:
Stored size: 1.38 KB
Contents
# frozen_string_literal: true module ElasticAPM # @api private module Spies # @api private class FaradaySpy # rubocop:disable Metrics/MethodLength, Metrics/AbcSize def install ::Faraday::Connection.class_eval do alias run_request_without_apm run_request def run_request(method, url, body, headers, &block) unless (transaction = ElasticAPM.current_transaction) return run_request_without_apm(method, url, body, headers, &block) end host = if url_prefix.is_a?(URI) && url_prefix.host url_prefix.host else URI(url).host end name = "#{method.upcase} #{host}" type = "ext.faraday.#{method}" ElasticAPM.with_span name, type do |span| ElasticAPM::Spies::NetHTTPSpy.disable_in do id = span&.id || transaction.id run_request_without_apm(method, url, body, headers) do |req| req['Elastic-Apm-Traceparent'] = transaction.traceparent.to_header(span_id: id) yield req if block_given? end end end end end end # rubocop:enable Metrics/MethodLength, Metrics/AbcSize end register 'Faraday', 'faraday', FaradaySpy.new end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
elastic-apm-2.1.2 | lib/elastic_apm/spies/faraday.rb |