module Datadog::Transport::HTTP

Namespace for HTTP transport components

Public Instance Methods

default(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 28
def default(options = {})
  new do |transport|
    transport.adapter :net_http, default_hostname, default_port
    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], fallback: API::V2
    transport.api API::V2, apis[API::V2]

    # Apply any settings given by options
    unless options.empty?
      # Change hostname/port
      if options.key?(:hostname) || options.key?(:port)
        hostname = options.fetch(:hostname, default_hostname)
        port = options.fetch(:port, default_port)
        transport.adapter :net_http, hostname, port
      end

      # Change default API
      transport.default_api = options[:api_version] if options.key?(:api_version)

      # Add headers
      transport.headers options[:headers] if options.key?(:headers)

      # Execute on_build callback
      options[:on_build].call(transport) if options[:on_build].is_a?(Proc)
    end

    # Call block to apply any customization, if provided.
    yield(transport) if block_given?
  end
end
default_headers() click to toggle source
# File lib/ddtrace/transport/http.rb, line 63
def default_headers
  {
    Datadog::Ext::Transport::HTTP::HEADER_META_LANG => Datadog::Ext::Runtime::LANG,
    Datadog::Ext::Transport::HTTP::HEADER_META_LANG_VERSION => Datadog::Ext::Runtime::LANG_VERSION,
    Datadog::Ext::Transport::HTTP::HEADER_META_LANG_INTERPRETER => Datadog::Ext::Runtime::LANG_INTERPRETER,
    Datadog::Ext::Transport::HTTP::HEADER_META_TRACER_VERSION => Datadog::Ext::Runtime::TRACER_VERSION
  }.tap do |headers|
    # Add container ID, if present.
    container_id = Datadog::Runtime::Container.container_id
    unless container_id.nil?
      headers[Datadog::Ext::Transport::HTTP::HEADER_CONTAINER_ID] = container_id
    end
  end
end
default_hostname() click to toggle source
# File lib/ddtrace/transport/http.rb, line 78
def default_hostname
  return default_url.hostname if default_url

  ENV.fetch(Datadog::Ext::Transport::HTTP::ENV_DEFAULT_HOST, Datadog::Ext::Transport::HTTP::DEFAULT_HOST)
end
default_port() click to toggle source
# File lib/ddtrace/transport/http.rb, line 84
def default_port
  return default_url.port if default_url

  ENV.fetch(Datadog::Ext::Transport::HTTP::ENV_DEFAULT_PORT, Datadog::Ext::Transport::HTTP::DEFAULT_PORT).to_i
end
default_url() click to toggle source
# File lib/ddtrace/transport/http.rb, line 90
def default_url
  url_env = ENV.fetch(Datadog::Ext::Transport::HTTP::ENV_DEFAULT_URL, nil)

  if url_env
    uri_parsed = URI.parse(url_env)

    uri_parsed if %w[http https].include?(uri_parsed.scheme)
  end
end
new(&block) click to toggle source

Builds a new Transport::HTTP::Client

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