module Datadog::Transport::HTTP

Namespace for HTTP transport components

Public Instance Methods

default(agent_settings: Datadog::Configuration::AgentSettingsResolver::ENVIRONMENT_AGENT_SETTINGS, **options) { |transport| ... } click to toggle source

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

# File lib/ddtrace/transport/http.rb, line 31
def default(agent_settings: Datadog::Configuration::AgentSettingsResolver::ENVIRONMENT_AGENT_SETTINGS, **options)
  new do |transport|
    transport.adapter(
      default_adapter,
      agent_settings.hostname,
      agent_settings.port,
      timeout: agent_settings.timeout_seconds,
      ssl: agent_settings.ssl
    )
    transport.headers default_headers

    if agent_settings.deprecated_for_removal_transport_configuration_options
      # The deprecated_for_removal_transport_configuration_options take precedence over any options the caller
      # specifies
      options = options.merge(**agent_settings.deprecated_for_removal_transport_configuration_options)
    end

    apis = API.defaults

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

    # 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_adapter() click to toggle source
# File lib/ddtrace/transport/http.rb, line 82
def default_adapter
  :net_http
end
default_headers() click to toggle source
# File lib/ddtrace/transport/http.rb, line 69
def default_headers
  {
    Datadog::Ext::Transport::HTTP::HEADER_META_LANG => Datadog::Core::Environment::Ext::LANG,
    Datadog::Ext::Transport::HTTP::HEADER_META_LANG_VERSION => Datadog::Core::Environment::Ext::LANG_VERSION,
    Datadog::Ext::Transport::HTTP::HEADER_META_LANG_INTERPRETER => Datadog::Core::Environment::Ext::LANG_INTERPRETER,
    Datadog::Ext::Transport::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::Ext::Transport::HTTP::HEADER_CONTAINER_ID] = container_id unless container_id.nil?
  end
end
default_hostname(logger: Datadog.logger) click to toggle source
# File lib/ddtrace/transport/http.rb, line 86
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.'
  )

  Datadog::Configuration::AgentSettingsResolver::ENVIRONMENT_AGENT_SETTINGS.hostname
end
default_port(logger: Datadog.logger) click to toggle source
# File lib/ddtrace/transport/http.rb, line 95
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.'
  )

  Datadog::Configuration::AgentSettingsResolver::ENVIRONMENT_AGENT_SETTINGS.port
end
default_url(logger: Datadog.logger) click to toggle source
# File lib/ddtrace/transport/http.rb, line 104
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) click to toggle source

Builds a new Transport::HTTP::Client

# File lib/ddtrace/transport/http.rb, line 25
def new(&block)
  Builder.new(&block).to_transport
end