Module: Datadog::Transport::HTTP

Defined in:
lib/ddtrace/transport/http.rb,
lib/ddtrace/transport/http/api.rb,
lib/ddtrace/transport/http/env.rb,
lib/ddtrace/transport/http/client.rb,
lib/ddtrace/transport/http/traces.rb,
lib/ddtrace/transport/http/api/map.rb,
lib/ddtrace/transport/http/builder.rb,
lib/ddtrace/transport/http/api/spec.rb,
lib/ddtrace/transport/http/response.rb,
lib/ddtrace/transport/http/statistics.rb,
lib/ddtrace/transport/http/adapters/net.rb,
lib/ddtrace/transport/http/api/endpoint.rb,
lib/ddtrace/transport/http/api/instance.rb,
lib/ddtrace/transport/http/adapters/test.rb,
lib/ddtrace/transport/http/api/fallbacks.rb,
lib/ddtrace/transport/http/adapters/registry.rb,
lib/ddtrace/transport/http/adapters/unix_socket.rb

Overview

Namespace for HTTP transport components

Defined Under Namespace

Modules: API, Adapters, Response, Statistics, Traces Classes: Builder, Client, Env

Constant Summary collapse

DO_NOT_USE_ENVIRONMENT_AGENT_SETTINGS =

NOTE: Due to… legacy reasons… This class likes having a default ‘AgentSettings` instance to fall back to. Because we generate this instance with an empty instance of `Settings`, the resulting `AgentSettings` below represents only settings specified via environment variables + the usual defaults.

DO NOT USE THIS IN NEW CODE, as it ignores any settings specified by users via ‘Datadog.configure`.

Datadog::Core::Configuration::AgentSettingsResolver.call(
  Datadog::Core::Configuration::Settings.new,
  logger: nil,
)

Class Method Summary collapse

Class Method Details

.default(agent_settings: DO_NOT_USE_ENVIRONMENT_AGENT_SETTINGS, **options) ⇒ Object

Builds a new Transport::HTTP::Client with default settings Pass a block to override any settings.



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/ddtrace/transport/http.rb', line 38

def default(
  agent_settings: DO_NOT_USE_ENVIRONMENT_AGENT_SETTINGS,
  **options
)
  new do |transport|
    transport.adapter(agent_settings)
    transport.headers default_headers

    apis = API.defaults

    transport.api API::V4, apis[API::V4], fallback: API::V3, default: true
    transport.api API::V3, apis[API::V3]

    # Apply any settings given by options
    unless options.empty?
      transport.default_api = options[:api_version] if options.key?(:api_version)
      transport.headers options[:headers] if options.key?(:headers)
    end

    if agent_settings.deprecated_for_removal_transport_configuration_proc
      agent_settings.deprecated_for_removal_transport_configuration_proc.call(transport)
    end

    # Call block to apply any customization, if provided
    yield(transport) if block_given?
  end
end

.default_adapterObject



80
81
82
# File 'lib/ddtrace/transport/http.rb', line 80

def default_adapter
  Transport::Ext::HTTP::ADAPTER
end

.default_headersObject



66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/ddtrace/transport/http.rb', line 66

def default_headers
  {
    Datadog::Transport::Ext::HTTP::HEADER_CLIENT_COMPUTED_TOP_LEVEL => '1',
    Datadog::Transport::Ext::HTTP::HEADER_META_LANG => Datadog::Core::Environment::Ext::LANG,
    Datadog::Transport::Ext::HTTP::HEADER_META_LANG_VERSION => Datadog::Core::Environment::Ext::LANG_VERSION,
    Datadog::Transport::Ext::HTTP::HEADER_META_LANG_INTERPRETER => Datadog::Core::Environment::Ext::LANG_INTERPRETER,
    Datadog::Transport::Ext::HTTP::HEADER_META_TRACER_VERSION => Datadog::Core::Environment::Ext::TRACER_VERSION
  }.tap do |headers|
    # Add container ID, if present.
    container_id = Datadog::Core::Environment::Container.container_id
    headers[Datadog::Transport::Ext::HTTP::HEADER_CONTAINER_ID] = container_id unless container_id.nil?
  end
end

.default_hostname(logger: Datadog.logger) ⇒ Object



84
85
86
87
88
89
90
91
# File 'lib/ddtrace/transport/http.rb', line 84

def default_hostname(logger: Datadog.logger)
  logger.warn(
    'Deprecated for removal: Using #default_hostname for configuration is deprecated and will ' \
    'be removed on a future ddtrace release.'
  )

  DO_NOT_USE_ENVIRONMENT_AGENT_SETTINGS.hostname
end

.default_port(logger: Datadog.logger) ⇒ Object



93
94
95
96
97
98
99
100
# File 'lib/ddtrace/transport/http.rb', line 93

def default_port(logger: Datadog.logger)
  logger.warn(
    'Deprecated for removal: Using #default_hostname for configuration is deprecated and will ' \
    'be removed on a future ddtrace release.'
  )

  DO_NOT_USE_ENVIRONMENT_AGENT_SETTINGS.port
end

.default_url(logger: Datadog.logger) ⇒ Object



102
103
104
105
106
107
108
109
# File 'lib/ddtrace/transport/http.rb', line 102

def default_url(logger: Datadog.logger)
  logger.warn(
    'Deprecated for removal: Using #default_url for configuration is deprecated and will ' \
    'be removed on a future ddtrace release.'
  )

  nil
end

.new(&block) ⇒ Object

Builds a new Transport::HTTP::Client



32
33
34
# File 'lib/ddtrace/transport/http.rb', line 32

def new(&block)
  Builder.new(&block).to_transport
end