Sha256: 23a539204e015317fe808333a77ce89fafccae97b2c34d5e4d827b6e0121e82d

Contents?: true

Size: 1.17 KB

Versions: 3

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

require_relative '../../../../ddtrace/transport/http/env'

# TODO: Decouple transport/http/client
#
# The standard one does `include Transport::HTTP::Statistics` and performs
# stats updates, which may or may not be desirable in general.

module Datadog
  module Core
    module Transport
      module HTTP
        # Routes, encodes, and sends tracer data to the trace agent via HTTP.
        class Client
          attr_reader :api

          def initialize(api)
            @api = api
          end

          def send_request(request, &block)
            # Build request into env
            env = build_env(request)

            # Get responses from API
            yield(api, env)
          rescue StandardError => e
            message =
              "Internal error during #{self.class.name} request. Cause: #{e.class.name} #{e.message} " \
              "Location: #{Array(e.backtrace).first}"

            Datadog.logger.debug(message)

            Datadog::Transport::InternalErrorResponse.new(e)
          end

          def build_env(request)
            Datadog::Transport::HTTP::Env.new(request)
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ddtrace-1.14.0 lib/datadog/core/transport/http/client.rb
ddtrace-1.13.1 lib/datadog/core/transport/http/client.rb
ddtrace-1.13.0 lib/datadog/core/transport/http/client.rb