Module: Datadog::Contrib::RestClient::RequestPatch::InstanceMethods
- Defined in:
- lib/ddtrace/contrib/rest_client/request_patch.rb
Overview
InstanceMethods - implementing instrumentation
Instance Method Summary collapse
- #datadog_tag_request(uri, span) ⇒ Object
- #datadog_trace_request(uri) ⇒ Object
- #execute(&block) ⇒ Object
Instance Method Details
#datadog_tag_request(uri, span) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/ddtrace/contrib/rest_client/request_patch.rb', line 33 def datadog_tag_request(uri, span) span.resource = method.to_s.upcase # Tag as an external peer service span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service) # Set analytics sample rate Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled? span.set_tag(Datadog::Ext::HTTP::URL, uri.path) span.set_tag(Datadog::Ext::HTTP::METHOD, method.to_s.upcase) span.set_tag(Datadog::Ext::NET::TARGET_HOST, uri.host) span.set_tag(Datadog::Ext::NET::TARGET_PORT, uri.port) end |
#datadog_trace_request(uri) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/ddtrace/contrib/rest_client/request_patch.rb', line 48 def datadog_trace_request(uri) span = datadog_configuration[:tracer].trace(Ext::SPAN_REQUEST, service: datadog_configuration[:service_name], span_type: Datadog::Ext::HTTP::TYPE_OUTBOUND) datadog_tag_request(uri, span) yield(span).tap do |response| # Verify return value is a response # If so, add additional tags. span.set_tag(Datadog::Ext::HTTP::STATUS_CODE, response.code) if response.is_a?(::RestClient::Response) end rescue ::RestClient::ExceptionWithResponse => e span.set_error(e) if Datadog::Ext::HTTP::ERROR_RANGE.cover?(e.http_code) span.set_tag(Datadog::Ext::HTTP::STATUS_CODE, e.http_code) raise e # rubocop:disable Lint/RescueException rescue Exception => e # rubocop:enable Lint/RescueException span.set_error(e) if span raise e ensure span.finish if span end |
#execute(&block) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/ddtrace/contrib/rest_client/request_patch.rb', line 19 def execute(&block) uri = URI.parse(url) return super(&block) unless datadog_configuration[:tracer].enabled datadog_trace_request(uri) do |span| if datadog_configuration[:distributed_tracing] Datadog::HTTPPropagator.inject!(span.context, processed_headers) end super(&block) end end |