class Jaeger::Extractors::JaegerRackCodec

Public Class Methods

extract(carrier) click to toggle source
# File lib/jaeger/extractors.rb, line 43
def self.extract(carrier)
  serialized_trace = carrier['HTTP_UBER_TRACE_ID']
  serialized_trace = CGI.unescape(serialized_trace) if serialized_trace
  context = SerializedJaegerTrace.parse(serialized_trace)
  return nil unless context

  carrier.each do |key, value|
    baggage_match = key.match(/\AHTTP_UBERCTX_(\w+)\Z/)
    if baggage_match
      key = baggage_match[1].downcase.tr('_', '-')
      context.set_baggage_item(key, CGI.unescape(value))
    end
  end

  context
end