Sha256: 5f403c1471c993aa33e7fbfc9613ce0aaf0dc9f015be7c12a359de74b52a9ffb
Contents?: true
Size: 1.9 KB
Versions: 1
Compression:
Stored size: 1.9 KB
Contents
class OpenTelemetry::Instrumentation::Faraday::Middlewares::TracerMiddleware < ::Faraday::Middleware def call(env) http_method = HTTP_METHODS_SYMBOL_TO_STRING[env.method] attributes = span_creation_attributes( http_method: http_method, url: env.url ) request_headers = env.request_headers.to_h header_attrs = Hypertrace::Instrumentation::DataCapture.headers_to_attribute_keys(request_headers, Hypertrace::Instrumentation::DataCapture::TYPE_REQUEST) content_type = request_headers['Content-Type'] if Hypertrace::Instrumentation::DataCapture.can_capture?(content_type, Hypertrace::Instrumentation::DataCapture::TYPE_REQUEST) body_cap = Hypertrace::Instrumentation::DataCapture.capturable_body(env&.request_body&.to_s) attributes['http.request.body'] = body_cap if body_cap end attributes.merge!(header_attrs) tracer.in_span( "HTTP #{http_method}", attributes: attributes, kind: :client ) do |span| OpenTelemetry.propagation.inject(env.request_headers) app.call(env).on_complete do |resp| resp = Faraday::Response.new(resp) resp_headers = resp.headers.to_h Hypertrace::Instrumentation::DataCapture.headers_to_attribute_keys(resp_headers, Hypertrace::Instrumentation::DataCapture::TYPE_RESPONSE) do |k, v| span.set_attribute(k, v) end content_type = resp_headers['content-type'] if Hypertrace::Instrumentation::DataCapture.can_capture?(content_type, Hypertrace::Instrumentation::DataCapture::TYPE_RESPONSE) body_cap = Hypertrace::Instrumentation::DataCapture.capturable_body(resp.body) span.set_attribute('http.response.body', body_cap) if body_cap end trace_response(span, resp) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hypertrace-agent-0.1.0 | lib/hypertrace/instrumentation/faraday_patch.rb |