module Datadog::Contrib::Sinatra::Headers

Gets and sets trace information from a Rack headers Hash

Public Instance Methods

response_header_tags(headers, target_headers) click to toggle source
# File lib/ddtrace/contrib/sinatra/headers.rb, line 11
def response_header_tags(headers, target_headers)
  target_headers ||= []

  {}.tap do |result|
    target_headers.each do |header|
      if headers.key?(header)
        result[Datadog::Ext::HTTP::ResponseHeaders.to_tag(header)] = headers[header]
      else
        # Try a case-insensitive lookup
        uppercased_header = header.to_s.upcase
        matching_header = headers.keys.find { |h| h.upcase == uppercased_header }
        result[Datadog::Ext::HTTP::ResponseHeaders.to_tag(header)] = headers[matching_header] if matching_header
      end
    end
  end
end