Sha256: a7e4a4d1bd0f8065fe0417516f6b32572fca2932cbe88ba0c0975e576604b0b0

Contents?: true

Size: 1.43 KB

Versions: 11

Compression:

Stored size: 1.43 KB

Contents

# typed: true

require_relative '../../configuration/settings'
require_relative 'env'
require_relative 'ext'
require_relative 'adapters/net'

module Datadog
  module Core
    module Telemetry
      module Http
        # Class to send telemetry data to Telemetry API
        class Transport
          attr_reader \
            :host,
            :port,
            :ssl,
            :path

          def initialize
            agent_settings = Configuration::AgentSettingsResolver.call(Datadog.configuration)
            @host = agent_settings.hostname
            @port = agent_settings.port
            @ssl = false
            @path = Http::Ext::AGENT_ENDPOINT
          end

          def request(request_type:, payload:)
            env = Http::Env.new
            env.path = @path
            env.body = payload
            env.headers = headers(request_type: request_type)
            adapter.post(env)
          end

          private

          def headers(request_type:, api_version: Http::Ext::API_VERSION)
            {
              Http::Ext::HEADER_CONTENT_TYPE => Http::Ext::CONTENT_TYPE_APPLICATION_JSON,
              Http::Ext::HEADER_DD_TELEMETRY_API_VERSION => api_version,
              Http::Ext::HEADER_DD_TELEMETRY_REQUEST_TYPE => request_type,
            }
          end

          def adapter
            @adapter ||= Http::Adapters::Net.new(hostname: @host, port: @port, ssl: @ssl)
          end
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
ddtrace-1.9.0 lib/datadog/core/telemetry/http/transport.rb
ddtrace-1.8.0 lib/datadog/core/telemetry/http/transport.rb
ddtrace-1.7.0 lib/datadog/core/telemetry/http/transport.rb
ddtrace-1.6.1 lib/datadog/core/telemetry/http/transport.rb
ddtrace-1.6.0 lib/datadog/core/telemetry/http/transport.rb
ddtrace-1.5.2 lib/datadog/core/telemetry/http/transport.rb
ddtrace-1.5.1 lib/datadog/core/telemetry/http/transport.rb
ddtrace-1.5.0 lib/datadog/core/telemetry/http/transport.rb
ddtrace-1.4.2 lib/datadog/core/telemetry/http/transport.rb
ddtrace-1.4.1 lib/datadog/core/telemetry/http/transport.rb
ddtrace-1.4.0 lib/datadog/core/telemetry/http/transport.rb