Module: Datadog::Tracing::Contrib::Sinatra::Env

Defined in:
lib/datadog/tracing/contrib/sinatra/env.rb

Overview

Gets and sets trace information from a Rack Env

Class Method Summary collapse

Class Method Details

.datadog_span(env) ⇒ Object



14
15
16
# File 'lib/datadog/tracing/contrib/sinatra/env.rb', line 14

def datadog_span(env)
  env[Ext::RACK_ENV_SINATRA_REQUEST_SPAN]
end

.header_to_rack_header(name) ⇒ Object



35
36
37
# File 'lib/datadog/tracing/contrib/sinatra/env.rb', line 35

def header_to_rack_header(name)
  "HTTP_#{name.to_s.upcase.gsub(/[-\s]/, '_')}"
end

.request_header_tags(env, headers) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/datadog/tracing/contrib/sinatra/env.rb', line 22

def request_header_tags(env, headers)
  headers ||= []

  {}.tap do |result|
    headers.each do |header|
      rack_header = header_to_rack_header(header)
      if env.key?(rack_header)
        result[Tracing::Metadata::Ext::HTTP::RequestHeaders.to_tag(header)] = env[rack_header]
      end
    end
  end
end

.route_path(env, use_script_names: ) ⇒ Object



39
40
41
42
43
44
45
46
47
48
# File 'lib/datadog/tracing/contrib/sinatra/env.rb', line 39

def route_path(env, use_script_names: Datadog.configuration.tracing[:sinatra][:resource_script_names])
  return unless env['sinatra.route']

  _, path = env['sinatra.route'].split(' ', 2)
  if use_script_names
    env['SCRIPT_NAME'].to_s + path
  else
    path
  end
end

.set_datadog_span(env, span) ⇒ Object



18
19
20
# File 'lib/datadog/tracing/contrib/sinatra/env.rb', line 18

def set_datadog_span(env, span)
  env[Ext::RACK_ENV_SINATRA_REQUEST_SPAN] = span
end