ddtrace 1.14.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +146 -2
- data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +3 -5
- data/ext/ddtrace_profiling_native_extension/clock_id.h +0 -3
- data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +0 -22
- data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +0 -1
- data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +41 -6
- data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.c +3 -0
- data/ext/ddtrace_profiling_native_extension/collectors_stack.c +76 -24
- data/ext/ddtrace_profiling_native_extension/collectors_stack.h +1 -1
- data/ext/ddtrace_profiling_native_extension/collectors_thread_context.c +207 -32
- data/ext/ddtrace_profiling_native_extension/collectors_thread_context.h +1 -1
- data/ext/ddtrace_profiling_native_extension/extconf.rb +8 -2
- data/ext/ddtrace_profiling_native_extension/http_transport.c +26 -10
- data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.c +42 -0
- data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +6 -0
- data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +1 -16
- data/ext/ddtrace_profiling_native_extension/pid_controller.c +57 -0
- data/ext/ddtrace_profiling_native_extension/pid_controller.h +45 -0
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +17 -12
- data/ext/ddtrace_profiling_native_extension/profiling.c +0 -2
- data/ext/ddtrace_profiling_native_extension/stack_recorder.c +74 -37
- data/ext/ddtrace_profiling_native_extension/stack_recorder.h +13 -3
- data/lib/datadog/appsec/assets/waf_rules/processors.json +92 -0
- data/lib/datadog/appsec/assets/waf_rules/recommended.json +698 -75
- data/lib/datadog/appsec/assets/waf_rules/scanners.json +114 -0
- data/lib/datadog/appsec/assets/waf_rules/strict.json +98 -8
- data/lib/datadog/appsec/assets.rb +8 -0
- data/lib/datadog/appsec/component.rb +9 -2
- data/lib/datadog/appsec/configuration/settings.rb +67 -2
- data/lib/datadog/appsec/contrib/rack/gateway/request.rb +6 -2
- data/lib/datadog/appsec/contrib/rack/gateway/response.rb +46 -0
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +8 -6
- data/lib/datadog/appsec/contrib/rack/reactive/request.rb +2 -7
- data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +2 -5
- data/lib/datadog/appsec/contrib/rack/reactive/response.rb +7 -5
- data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +3 -2
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +34 -10
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +3 -2
- data/lib/datadog/appsec/contrib/rails/patcher.rb +9 -3
- data/lib/datadog/appsec/contrib/rails/reactive/action.rb +2 -5
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +6 -4
- data/lib/datadog/appsec/contrib/sinatra/patcher.rb +13 -7
- data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +2 -5
- data/lib/datadog/appsec/event.rb +106 -50
- data/lib/datadog/appsec/monitor/gateway/watcher.rb +3 -3
- data/lib/datadog/appsec/monitor/reactive/set_user.rb +2 -5
- data/lib/datadog/appsec/processor/actions.rb +49 -0
- data/lib/datadog/appsec/processor/rule_merger.rb +22 -2
- data/lib/datadog/appsec/processor.rb +34 -6
- data/lib/datadog/appsec/remote.rb +4 -1
- data/lib/datadog/appsec/response.rb +82 -4
- data/lib/datadog/appsec/sample_rate.rb +21 -0
- data/lib/datadog/appsec.rb +2 -2
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +29 -24
- data/lib/datadog/core/configuration/base.rb +1 -11
- data/lib/datadog/core/configuration/components.rb +7 -2
- data/lib/datadog/core/configuration/ext.rb +21 -0
- data/lib/datadog/core/configuration/option.rb +2 -4
- data/lib/datadog/core/configuration/option_definition.rb +17 -41
- data/lib/datadog/core/configuration/options.rb +5 -5
- data/lib/datadog/core/configuration/settings.rb +47 -45
- data/lib/datadog/core/environment/execution.rb +47 -9
- data/lib/datadog/core/environment/variable_helpers.rb +0 -69
- data/lib/datadog/core/error.rb +1 -0
- data/lib/datadog/core/git/ext.rb +2 -0
- data/lib/datadog/core/remote/client/capabilities.rb +1 -1
- data/lib/datadog/core/remote/component.rb +2 -2
- data/lib/datadog/core/remote/negotiation.rb +2 -2
- data/lib/datadog/core/remote/transport/config.rb +60 -0
- data/lib/datadog/core/remote/transport/http/api/instance.rb +39 -0
- data/lib/datadog/core/remote/transport/http/api/spec.rb +21 -0
- data/lib/datadog/core/remote/transport/http/api.rb +58 -0
- data/lib/datadog/core/remote/transport/http/builder.rb +219 -0
- data/lib/datadog/core/remote/transport/http/client.rb +48 -0
- data/lib/datadog/core/remote/transport/http/config.rb +280 -0
- data/lib/datadog/core/remote/transport/http/negotiation.rb +146 -0
- data/lib/datadog/core/remote/transport/http.rb +179 -0
- data/lib/datadog/core/{transport → remote/transport}/negotiation.rb +25 -23
- data/lib/datadog/core/remote/worker.rb +3 -1
- data/lib/datadog/core/telemetry/collector.rb +3 -2
- data/lib/datadog/core/telemetry/http/transport.rb +2 -1
- data/lib/datadog/core/transport/ext.rb +47 -0
- data/lib/datadog/core/transport/http/adapters/net.rb +168 -0
- data/lib/datadog/core/transport/http/adapters/registry.rb +29 -0
- data/lib/datadog/core/transport/http/adapters/test.rb +89 -0
- data/lib/datadog/core/transport/http/adapters/unix_socket.rb +83 -0
- data/lib/datadog/core/transport/http/api/endpoint.rb +31 -0
- data/lib/datadog/core/transport/http/api/fallbacks.rb +26 -0
- data/lib/datadog/core/transport/http/api/map.rb +18 -0
- data/lib/datadog/core/transport/http/env.rb +62 -0
- data/lib/datadog/core/transport/http/response.rb +60 -0
- data/lib/datadog/core/transport/parcel.rb +22 -0
- data/lib/datadog/core/transport/request.rb +17 -0
- data/lib/datadog/core/transport/response.rb +64 -0
- data/lib/datadog/core/workers/polling.rb +2 -2
- data/lib/datadog/opentelemetry/api/context.rb +10 -3
- data/lib/datadog/opentelemetry/sdk/propagator.rb +2 -1
- data/lib/datadog/opentelemetry/sdk/span_processor.rb +14 -2
- data/lib/datadog/opentelemetry/sdk/trace/span.rb +68 -0
- data/lib/datadog/opentelemetry/trace.rb +58 -0
- data/lib/datadog/opentelemetry.rb +1 -0
- data/lib/datadog/opentracer.rb +9 -0
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +14 -19
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -1
- data/lib/datadog/profiling/collectors/thread_context.rb +9 -1
- data/lib/datadog/profiling/component.rb +24 -99
- data/lib/datadog/profiling/ext.rb +0 -12
- data/lib/datadog/profiling/flush.rb +0 -3
- data/lib/datadog/profiling/http_transport.rb +6 -3
- data/lib/datadog/profiling/native_extension.rb +0 -21
- data/lib/datadog/profiling/profiler.rb +36 -13
- data/lib/datadog/profiling/scheduler.rb +16 -9
- data/lib/datadog/profiling.rb +8 -81
- data/lib/datadog/tracing/component.rb +10 -4
- data/lib/datadog/tracing/configuration/agent_settings_resolver.rb +13 -0
- data/lib/datadog/tracing/configuration/ext.rb +4 -2
- data/lib/datadog/tracing/configuration/settings.rb +14 -7
- data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +4 -0
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +106 -197
- data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +3 -0
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +7 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +14 -14
- data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +3 -10
- data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +2 -1
- data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +8 -1
- data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +22 -0
- data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +6 -0
- data/lib/datadog/tracing/contrib/dalli/ext.rb +7 -0
- data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +9 -2
- data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +5 -0
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +5 -0
- data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +8 -0
- data/lib/datadog/tracing/contrib/excon/middleware.rb +5 -0
- data/lib/datadog/tracing/contrib/ext.rb +3 -0
- data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +5 -0
- data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +21 -1
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +11 -1
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +18 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +0 -4
- data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +3 -3
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +5 -0
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +5 -0
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +5 -0
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +7 -0
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +13 -3
- data/lib/datadog/tracing/contrib/opensearch/integration.rb +2 -2
- data/lib/datadog/tracing/contrib/opensearch/patcher.rb +7 -0
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +5 -0
- data/lib/datadog/tracing/contrib/presto/instrumentation.rb +5 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +1 -1
- data/lib/datadog/tracing/contrib/que/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/racecar/event.rb +5 -0
- data/lib/datadog/tracing/contrib/rack/header_tagging.rb +14 -4
- data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +4 -4
- data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/redis/instrumentation.rb +3 -38
- data/lib/datadog/tracing/contrib/redis/tags.rb +7 -2
- data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +46 -33
- data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +5 -0
- data/lib/datadog/tracing/contrib/sequel/utils.rb +5 -0
- data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/utils/quantization/http.rb +2 -2
- data/lib/datadog/tracing/diagnostics/environment_logger.rb +6 -0
- data/lib/datadog/tracing/distributed/propagation.rb +13 -33
- data/lib/datadog/tracing/metadata/tagging.rb +3 -3
- data/lib/datadog/tracing/sync_writer.rb +3 -3
- data/lib/datadog/tracing/tracer.rb +2 -0
- data/lib/datadog/{core → tracing}/transport/http/api/instance.rb +1 -1
- data/lib/datadog/{core → tracing}/transport/http/api/spec.rb +1 -1
- data/lib/datadog/tracing/transport/http/api.rb +43 -0
- data/lib/datadog/{core → tracing}/transport/http/builder.rb +13 -68
- data/lib/datadog/tracing/transport/http/client.rb +57 -0
- data/lib/datadog/tracing/transport/http/statistics.rb +47 -0
- data/lib/datadog/tracing/transport/http/traces.rb +152 -0
- data/lib/datadog/tracing/transport/http.rb +124 -0
- data/lib/datadog/tracing/transport/io/client.rb +89 -0
- data/lib/datadog/tracing/transport/io/response.rb +27 -0
- data/lib/datadog/tracing/transport/io/traces.rb +101 -0
- data/lib/datadog/tracing/transport/io.rb +30 -0
- data/lib/datadog/tracing/transport/serializable_trace.rb +126 -0
- data/lib/datadog/tracing/transport/statistics.rb +77 -0
- data/lib/datadog/tracing/transport/trace_formatter.rb +209 -0
- data/lib/datadog/tracing/transport/traces.rb +224 -0
- data/lib/datadog/tracing/workers/trace_writer.rb +5 -3
- data/lib/datadog/tracing/workers.rb +3 -2
- data/lib/datadog/tracing/writer.rb +5 -2
- data/lib/ddtrace/transport/ext.rb +17 -15
- data/lib/ddtrace/version.rb +1 -1
- data/lib/ddtrace.rb +1 -1
- metadata +73 -96
- data/lib/datadog/ci/configuration/components.rb +0 -32
- data/lib/datadog/ci/configuration/settings.rb +0 -51
- data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +0 -35
- data/lib/datadog/ci/contrib/cucumber/ext.rb +0 -22
- data/lib/datadog/ci/contrib/cucumber/formatter.rb +0 -94
- data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +0 -28
- data/lib/datadog/ci/contrib/cucumber/integration.rb +0 -47
- data/lib/datadog/ci/contrib/cucumber/patcher.rb +0 -27
- data/lib/datadog/ci/contrib/minitest/configuration/settings.rb +0 -35
- data/lib/datadog/ci/contrib/minitest/ext.rb +0 -21
- data/lib/datadog/ci/contrib/minitest/integration.rb +0 -49
- data/lib/datadog/ci/contrib/minitest/patcher.rb +0 -27
- data/lib/datadog/ci/contrib/minitest/test_helper.rb +0 -68
- data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +0 -35
- data/lib/datadog/ci/contrib/rspec/example.rb +0 -68
- data/lib/datadog/ci/contrib/rspec/ext.rb +0 -21
- data/lib/datadog/ci/contrib/rspec/integration.rb +0 -48
- data/lib/datadog/ci/contrib/rspec/patcher.rb +0 -27
- data/lib/datadog/ci/ext/app_types.rb +0 -9
- data/lib/datadog/ci/ext/environment.rb +0 -575
- data/lib/datadog/ci/ext/settings.rb +0 -10
- data/lib/datadog/ci/ext/test.rb +0 -35
- data/lib/datadog/ci/extensions.rb +0 -19
- data/lib/datadog/ci/flush.rb +0 -38
- data/lib/datadog/ci/test.rb +0 -81
- data/lib/datadog/ci.rb +0 -21
- data/lib/datadog/core/configuration/dependency_resolver.rb +0 -28
- data/lib/datadog/core/configuration/option_definition_set.rb +0 -22
- data/lib/datadog/core/configuration/option_set.rb +0 -10
- data/lib/datadog/core/transport/config.rb +0 -58
- data/lib/datadog/core/transport/http/api.rb +0 -57
- data/lib/datadog/core/transport/http/client.rb +0 -45
- data/lib/datadog/core/transport/http/config.rb +0 -278
- data/lib/datadog/core/transport/http/negotiation.rb +0 -144
- data/lib/datadog/core/transport/http.rb +0 -169
- data/lib/datadog/core/utils/object_set.rb +0 -43
- data/lib/datadog/core/utils/string_table.rb +0 -47
- data/lib/datadog/profiling/backtrace_location.rb +0 -34
- data/lib/datadog/profiling/buffer.rb +0 -43
- data/lib/datadog/profiling/collectors/old_stack.rb +0 -301
- data/lib/datadog/profiling/encoding/profile.rb +0 -41
- data/lib/datadog/profiling/event.rb +0 -15
- data/lib/datadog/profiling/events/stack.rb +0 -82
- data/lib/datadog/profiling/old_recorder.rb +0 -107
- data/lib/datadog/profiling/pprof/builder.rb +0 -125
- data/lib/datadog/profiling/pprof/converter.rb +0 -102
- data/lib/datadog/profiling/pprof/message_set.rb +0 -16
- data/lib/datadog/profiling/pprof/payload.rb +0 -20
- data/lib/datadog/profiling/pprof/pprof.proto +0 -212
- data/lib/datadog/profiling/pprof/pprof_pb.rb +0 -81
- data/lib/datadog/profiling/pprof/stack_sample.rb +0 -139
- data/lib/datadog/profiling/pprof/string_table.rb +0 -12
- data/lib/datadog/profiling/pprof/template.rb +0 -118
- data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +0 -43
- data/lib/datadog/profiling/trace_identifiers/helper.rb +0 -45
- data/lib/ddtrace/transport/http/adapters/net.rb +0 -168
- data/lib/ddtrace/transport/http/adapters/registry.rb +0 -27
- data/lib/ddtrace/transport/http/adapters/test.rb +0 -85
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +0 -77
- data/lib/ddtrace/transport/http/api/endpoint.rb +0 -29
- data/lib/ddtrace/transport/http/api/fallbacks.rb +0 -24
- data/lib/ddtrace/transport/http/api/instance.rb +0 -35
- data/lib/ddtrace/transport/http/api/map.rb +0 -16
- data/lib/ddtrace/transport/http/api/spec.rb +0 -17
- data/lib/ddtrace/transport/http/api.rb +0 -39
- data/lib/ddtrace/transport/http/builder.rb +0 -176
- data/lib/ddtrace/transport/http/client.rb +0 -52
- data/lib/ddtrace/transport/http/env.rb +0 -58
- data/lib/ddtrace/transport/http/response.rb +0 -58
- data/lib/ddtrace/transport/http/statistics.rb +0 -43
- data/lib/ddtrace/transport/http/traces.rb +0 -144
- data/lib/ddtrace/transport/http.rb +0 -117
- data/lib/ddtrace/transport/io/client.rb +0 -85
- data/lib/ddtrace/transport/io/response.rb +0 -25
- data/lib/ddtrace/transport/io/traces.rb +0 -99
- data/lib/ddtrace/transport/io.rb +0 -28
- data/lib/ddtrace/transport/parcel.rb +0 -20
- data/lib/ddtrace/transport/request.rb +0 -15
- data/lib/ddtrace/transport/response.rb +0 -60
- data/lib/ddtrace/transport/serializable_trace.rb +0 -122
- data/lib/ddtrace/transport/statistics.rb +0 -75
- data/lib/ddtrace/transport/trace_formatter.rb +0 -207
- data/lib/ddtrace/transport/traces.rb +0 -216
|
@@ -11,7 +11,7 @@ require_relative 'v1/dependency'
|
|
|
11
11
|
require_relative 'v1/host'
|
|
12
12
|
require_relative 'v1/integration'
|
|
13
13
|
require_relative 'v1/product'
|
|
14
|
-
require_relative '
|
|
14
|
+
require_relative '../transport/ext'
|
|
15
15
|
|
|
16
16
|
module Datadog
|
|
17
17
|
module Core
|
|
@@ -146,6 +146,7 @@ module Datadog
|
|
|
146
146
|
options['logger.instance'] = configuration.logger.instance.class.to_s
|
|
147
147
|
options['appsec.enabled'] = configuration.dig('appsec', 'enabled') if configuration.respond_to?('appsec')
|
|
148
148
|
options['tracing.opentelemetry.enabled'] = !defined?(Datadog::OpenTelemetry::LOADED).nil?
|
|
149
|
+
options['tracing.opentracing.enabled'] = !defined?(Datadog::OpenTracer::LOADED).nil?
|
|
149
150
|
options.compact!
|
|
150
151
|
options
|
|
151
152
|
end
|
|
@@ -190,7 +191,7 @@ module Datadog
|
|
|
190
191
|
|
|
191
192
|
def agent_transport
|
|
192
193
|
adapter = Core::Configuration::AgentSettingsResolver.call(Datadog.configuration).adapter
|
|
193
|
-
if adapter == Datadog::Transport::Ext::UnixSocket::ADAPTER
|
|
194
|
+
if adapter == Datadog::Core::Transport::Ext::UnixSocket::ADAPTER
|
|
194
195
|
'UDS'
|
|
195
196
|
else
|
|
196
197
|
'TCP'
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require_relative '../../configuration/settings'
|
|
4
|
+
require_relative '../../transport/ext'
|
|
4
5
|
require_relative 'env'
|
|
5
6
|
require_relative 'ext'
|
|
6
7
|
require_relative 'adapters/net'
|
|
@@ -38,7 +39,7 @@ module Datadog
|
|
|
38
39
|
|
|
39
40
|
def headers(request_type:, api_version: Http::Ext::API_VERSION)
|
|
40
41
|
{
|
|
41
|
-
Datadog::Transport::Ext::HTTP::HEADER_DD_INTERNAL_UNTRACED_REQUEST => '1',
|
|
42
|
+
Datadog::Core::Transport::Ext::HTTP::HEADER_DD_INTERNAL_UNTRACED_REQUEST => '1',
|
|
42
43
|
Http::Ext::HEADER_CONTENT_TYPE => Http::Ext::CONTENT_TYPE_APPLICATION_JSON,
|
|
43
44
|
Http::Ext::HEADER_DD_TELEMETRY_API_VERSION => api_version,
|
|
44
45
|
Http::Ext::HEADER_DD_TELEMETRY_REQUEST_TYPE => request_type,
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../configuration/ext'
|
|
4
|
+
# DEV(2.0): This file should replace /ddtrace/transport/ext.rb
|
|
5
|
+
# WARN: This file is used in /dd trace/transport/ext.rb which is a public API. Any changes here
|
|
6
|
+
# should be treated as changes to a public API.
|
|
7
|
+
module Datadog
|
|
8
|
+
module Core
|
|
9
|
+
module Transport
|
|
10
|
+
module Ext
|
|
11
|
+
module HTTP
|
|
12
|
+
ADAPTER = Datadog::Core::Configuration::Ext::Agent::HTTP::ADAPTER
|
|
13
|
+
DEFAULT_HOST = Datadog::Core::Configuration::Ext::Agent::HTTP::DEFAULT_HOST
|
|
14
|
+
DEFAULT_PORT = Datadog::Core::Configuration::Ext::Agent::HTTP::DEFAULT_PORT
|
|
15
|
+
|
|
16
|
+
HEADER_CONTAINER_ID = 'Datadog-Container-ID'
|
|
17
|
+
HEADER_DD_API_KEY = 'DD-API-KEY'
|
|
18
|
+
# Tells agent that `_dd.top_level` metrics have been set by the tracer.
|
|
19
|
+
# The agent will not calculate top-level spans but instead trust the tracer tagging.
|
|
20
|
+
#
|
|
21
|
+
# This prevents partially flushed traces being mistakenly marked as top-level.
|
|
22
|
+
#
|
|
23
|
+
# Setting this header to any non-empty value enables this feature.
|
|
24
|
+
HEADER_CLIENT_COMPUTED_TOP_LEVEL = 'Datadog-Client-Computed-Top-Level'
|
|
25
|
+
HEADER_META_LANG = 'Datadog-Meta-Lang'
|
|
26
|
+
HEADER_META_LANG_VERSION = 'Datadog-Meta-Lang-Version'
|
|
27
|
+
HEADER_META_LANG_INTERPRETER = 'Datadog-Meta-Lang-Interpreter'
|
|
28
|
+
HEADER_META_TRACER_VERSION = 'Datadog-Meta-Tracer-Version'
|
|
29
|
+
|
|
30
|
+
# Header that prevents the Net::HTTP integration from tracing internal trace requests.
|
|
31
|
+
# Set it to any value to skip tracing.
|
|
32
|
+
HEADER_DD_INTERNAL_UNTRACED_REQUEST = 'DD-Internal-Untraced-Request'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
module Test
|
|
36
|
+
ADAPTER = :test
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
module UnixSocket
|
|
40
|
+
ADAPTER = Datadog::Core::Configuration::Ext::Agent::UnixSocket::ADAPTER
|
|
41
|
+
DEFAULT_PATH = Datadog::Core::Configuration::Ext::Agent::UnixSocket::DEFAULT_PATH
|
|
42
|
+
DEFAULT_TIMEOUT_SECONDS = Datadog::Core::Configuration::Ext::Agent::UnixSocket::DEFAULT_TIMEOUT_SECONDS
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../../../../core/transport/response'
|
|
4
|
+
require_relative '../../../../core/vendor/multipart-post/net/http/post/multipart'
|
|
5
|
+
|
|
6
|
+
module Datadog
|
|
7
|
+
module Core
|
|
8
|
+
module Transport
|
|
9
|
+
module HTTP
|
|
10
|
+
module Adapters
|
|
11
|
+
# Adapter for Net::HTTP
|
|
12
|
+
class Net
|
|
13
|
+
attr_reader \
|
|
14
|
+
:hostname,
|
|
15
|
+
:port,
|
|
16
|
+
:timeout,
|
|
17
|
+
:ssl
|
|
18
|
+
|
|
19
|
+
# in seconds
|
|
20
|
+
DEFAULT_TIMEOUT = 30
|
|
21
|
+
|
|
22
|
+
# @deprecated Positional parameters are deprecated. Use named parameters instead.
|
|
23
|
+
def initialize(hostname = nil, port = nil, **options)
|
|
24
|
+
@hostname = hostname || options.fetch(:hostname)
|
|
25
|
+
@port = port || options.fetch(:port)
|
|
26
|
+
@timeout = options[:timeout] || DEFAULT_TIMEOUT
|
|
27
|
+
@ssl = options.key?(:ssl) ? options[:ssl] == true : false
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.build(agent_settings)
|
|
31
|
+
new(
|
|
32
|
+
hostname: agent_settings.hostname,
|
|
33
|
+
port: agent_settings.port,
|
|
34
|
+
timeout: agent_settings.timeout_seconds,
|
|
35
|
+
ssl: agent_settings.ssl
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def open(&block)
|
|
40
|
+
# DEV Initializing +Net::HTTP+ directly help us avoid expensive
|
|
41
|
+
# options processing done in +Net::HTTP.start+:
|
|
42
|
+
# https://github.com/ruby/ruby/blob/b2d96abb42abbe2e01f010ffc9ac51f0f9a50002/lib/net/http.rb#L614-L618
|
|
43
|
+
req = ::Net::HTTP.new(hostname, port, nil)
|
|
44
|
+
|
|
45
|
+
req.use_ssl = ssl
|
|
46
|
+
req.open_timeout = req.read_timeout = timeout
|
|
47
|
+
|
|
48
|
+
req.start(&block)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def call(env)
|
|
52
|
+
if respond_to?(env.verb)
|
|
53
|
+
send(env.verb, env)
|
|
54
|
+
else
|
|
55
|
+
raise UnknownHTTPMethod, env
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def get(env)
|
|
60
|
+
get = ::Net::HTTP::Get.new(env.path, env.headers)
|
|
61
|
+
|
|
62
|
+
# Connect and send the request
|
|
63
|
+
http_response = open do |http|
|
|
64
|
+
http.request(get)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Build and return response
|
|
68
|
+
Response.new(http_response)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def post(env)
|
|
72
|
+
post = nil
|
|
73
|
+
|
|
74
|
+
if env.form.nil? || env.form.empty?
|
|
75
|
+
post = ::Net::HTTP::Post.new(env.path, env.headers)
|
|
76
|
+
post.body = env.body
|
|
77
|
+
else
|
|
78
|
+
post = ::Datadog::Core::Vendor::Net::HTTP::Post::Multipart.new(
|
|
79
|
+
env.path,
|
|
80
|
+
env.form,
|
|
81
|
+
env.headers
|
|
82
|
+
)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Connect and send the request
|
|
86
|
+
http_response = open do |http|
|
|
87
|
+
http.request(post)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Build and return response
|
|
91
|
+
Response.new(http_response)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def url
|
|
95
|
+
"http://#{hostname}:#{port}?timeout=#{timeout}"
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Raised when called with an unknown HTTP method
|
|
99
|
+
class UnknownHTTPMethod < StandardError
|
|
100
|
+
attr_reader :verb
|
|
101
|
+
|
|
102
|
+
def initialize(verb)
|
|
103
|
+
super("No matching Net::HTTP function for '#{verb}'!")
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# A wrapped Net::HTTP response that implements the Transport::Response interface
|
|
108
|
+
class Response
|
|
109
|
+
include Datadog::Core::Transport::Response
|
|
110
|
+
|
|
111
|
+
attr_reader :http_response
|
|
112
|
+
|
|
113
|
+
def initialize(http_response)
|
|
114
|
+
@http_response = http_response
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def payload
|
|
118
|
+
return super if http_response.nil?
|
|
119
|
+
|
|
120
|
+
http_response.body
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def code
|
|
124
|
+
return super if http_response.nil?
|
|
125
|
+
|
|
126
|
+
http_response.code.to_i
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def ok?
|
|
130
|
+
return super if http_response.nil?
|
|
131
|
+
|
|
132
|
+
code.between?(200, 299)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def unsupported?
|
|
136
|
+
return super if http_response.nil?
|
|
137
|
+
|
|
138
|
+
code == 415
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def not_found?
|
|
142
|
+
return super if http_response.nil?
|
|
143
|
+
|
|
144
|
+
code == 404
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def client_error?
|
|
148
|
+
return super if http_response.nil?
|
|
149
|
+
|
|
150
|
+
code.between?(400, 499)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def server_error?
|
|
154
|
+
return super if http_response.nil?
|
|
155
|
+
|
|
156
|
+
code.between?(500, 599)
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def inspect
|
|
160
|
+
"#{super}, http_response:#{http_response}"
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Datadog
|
|
4
|
+
module Core
|
|
5
|
+
module Transport
|
|
6
|
+
module HTTP
|
|
7
|
+
module Adapters
|
|
8
|
+
# List of available adapters
|
|
9
|
+
class Registry
|
|
10
|
+
def initialize
|
|
11
|
+
@adapters = {}
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def get(name)
|
|
15
|
+
@adapters[name]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def set(klass, name = nil)
|
|
19
|
+
name ||= klass.to_s
|
|
20
|
+
return if name.nil?
|
|
21
|
+
|
|
22
|
+
@adapters[name] = klass
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../../../../core/transport/response'
|
|
4
|
+
|
|
5
|
+
module Datadog
|
|
6
|
+
module Core
|
|
7
|
+
module Transport
|
|
8
|
+
module HTTP
|
|
9
|
+
module Adapters
|
|
10
|
+
# Adapter for testing
|
|
11
|
+
class Test
|
|
12
|
+
attr_reader \
|
|
13
|
+
:buffer,
|
|
14
|
+
:status
|
|
15
|
+
|
|
16
|
+
# @param buffer [Array] an optional array that will capture all spans sent to this adapter, defaults to +nil+
|
|
17
|
+
# @deprecated Positional parameters are deprecated. Use named parameters instead.
|
|
18
|
+
def initialize(buffer = nil, **options)
|
|
19
|
+
@buffer = buffer || options[:buffer]
|
|
20
|
+
@mutex = Mutex.new
|
|
21
|
+
@status = 200
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def call(env)
|
|
25
|
+
add_request(env)
|
|
26
|
+
Response.new(status)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def buffer?
|
|
30
|
+
!@buffer.nil?
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def add_request(env)
|
|
34
|
+
@mutex.synchronize { buffer << env } if buffer?
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def set_status!(status)
|
|
38
|
+
@status = status
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def url; end
|
|
42
|
+
|
|
43
|
+
# Response for test adapter
|
|
44
|
+
class Response
|
|
45
|
+
include Datadog::Core::Transport::Response
|
|
46
|
+
|
|
47
|
+
attr_reader \
|
|
48
|
+
:body,
|
|
49
|
+
:code
|
|
50
|
+
|
|
51
|
+
def initialize(code, body = nil)
|
|
52
|
+
@code = code
|
|
53
|
+
@body = body
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def payload
|
|
57
|
+
@body
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def ok?
|
|
61
|
+
code.between?(200, 299)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def unsupported?
|
|
65
|
+
code == 415
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def not_found?
|
|
69
|
+
code == 404
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def client_error?
|
|
73
|
+
code.between?(400, 499)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def server_error?
|
|
77
|
+
code.between?(500, 599)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def inspect
|
|
81
|
+
"#{super}, code:#{code}"
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'net/http'
|
|
4
|
+
require_relative '../../../transport/ext'
|
|
5
|
+
require_relative 'net'
|
|
6
|
+
|
|
7
|
+
module Datadog
|
|
8
|
+
module Core
|
|
9
|
+
module Transport
|
|
10
|
+
module HTTP
|
|
11
|
+
module Adapters
|
|
12
|
+
# Adapter for Unix sockets
|
|
13
|
+
class UnixSocket < Adapters::Net
|
|
14
|
+
attr_reader \
|
|
15
|
+
:filepath, # DEV(1.0): Rename to `uds_path`
|
|
16
|
+
:timeout
|
|
17
|
+
|
|
18
|
+
alias_method :uds_path, :filepath
|
|
19
|
+
|
|
20
|
+
# @deprecated Positional parameters are deprecated. Use named parameters instead.
|
|
21
|
+
# rubocop:disable Lint/MissingSuper
|
|
22
|
+
def initialize(uds_path = nil, **options)
|
|
23
|
+
@filepath = uds_path || options.fetch(:uds_path)
|
|
24
|
+
@timeout = options[:timeout] || Datadog::Core::Transport::Ext::UnixSocket::DEFAULT_TIMEOUT_SECONDS
|
|
25
|
+
end
|
|
26
|
+
# rubocop:enable Lint/MissingSuper
|
|
27
|
+
|
|
28
|
+
def self.build(agent_settings)
|
|
29
|
+
new(
|
|
30
|
+
uds_path: agent_settings.uds_path,
|
|
31
|
+
timeout: agent_settings.timeout_seconds,
|
|
32
|
+
)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def open(&block)
|
|
36
|
+
# Open connection
|
|
37
|
+
connection = HTTP.new(
|
|
38
|
+
uds_path,
|
|
39
|
+
read_timeout: timeout,
|
|
40
|
+
continue_timeout: timeout
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
connection.start(&block)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def url
|
|
47
|
+
"http+unix://#{uds_path}?timeout=#{timeout}"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Re-implements Net:HTTP with underlying Unix socket
|
|
51
|
+
class HTTP < ::Net::HTTP
|
|
52
|
+
DEFAULT_TIMEOUT = 1
|
|
53
|
+
|
|
54
|
+
attr_reader \
|
|
55
|
+
:filepath, # DEV(1.0): Rename to `uds_path`
|
|
56
|
+
:unix_socket
|
|
57
|
+
|
|
58
|
+
alias_method :uds_path, :filepath
|
|
59
|
+
|
|
60
|
+
def initialize(uds_path, options = {})
|
|
61
|
+
super('localhost', 80)
|
|
62
|
+
@filepath = uds_path
|
|
63
|
+
@read_timeout = options.fetch(:read_timeout, DEFAULT_TIMEOUT)
|
|
64
|
+
@continue_timeout = options.fetch(:continue_timeout, DEFAULT_TIMEOUT)
|
|
65
|
+
@debug_output = options[:debug_output] if options.key?(:debug_output)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def connect
|
|
69
|
+
@unix_socket = UNIXSocket.open(uds_path)
|
|
70
|
+
@socket = ::Net::BufferedIO.new(@unix_socket).tap do |socket|
|
|
71
|
+
socket.read_timeout = @read_timeout
|
|
72
|
+
socket.continue_timeout = @continue_timeout
|
|
73
|
+
socket.debug_output = @debug_output
|
|
74
|
+
end
|
|
75
|
+
on_connect
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
module Datadog
|
|
6
|
+
module Core
|
|
7
|
+
module Transport
|
|
8
|
+
module HTTP
|
|
9
|
+
module API
|
|
10
|
+
# Endpoint
|
|
11
|
+
class Endpoint
|
|
12
|
+
attr_reader \
|
|
13
|
+
:verb,
|
|
14
|
+
:path
|
|
15
|
+
|
|
16
|
+
def initialize(verb, path)
|
|
17
|
+
@verb = verb
|
|
18
|
+
@path = path
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def call(env)
|
|
22
|
+
env.verb = verb
|
|
23
|
+
env.path = path
|
|
24
|
+
yield(env)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Datadog
|
|
4
|
+
module Core
|
|
5
|
+
module Transport
|
|
6
|
+
module HTTP
|
|
7
|
+
module API
|
|
8
|
+
# Extension for Map with adds fallback versions.
|
|
9
|
+
module Fallbacks
|
|
10
|
+
def fallbacks
|
|
11
|
+
@fallbacks ||= {}
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def with_fallbacks(fallbacks)
|
|
15
|
+
tap { add_fallbacks!(fallbacks) }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def add_fallbacks!(fallbacks)
|
|
19
|
+
self.fallbacks.merge!(fallbacks)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'fallbacks'
|
|
4
|
+
|
|
5
|
+
module Datadog
|
|
6
|
+
module Core
|
|
7
|
+
module Transport
|
|
8
|
+
module HTTP
|
|
9
|
+
module API
|
|
10
|
+
# A mapping of API version => API Routes/Instance
|
|
11
|
+
class Map < Hash
|
|
12
|
+
include Fallbacks
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Datadog
|
|
4
|
+
module Core
|
|
5
|
+
module Transport
|
|
6
|
+
module HTTP
|
|
7
|
+
# Data structure for an HTTP request
|
|
8
|
+
class Env < Hash
|
|
9
|
+
attr_reader \
|
|
10
|
+
:request
|
|
11
|
+
|
|
12
|
+
# rubocop:disable Lint/MissingSuper
|
|
13
|
+
def initialize(request, options = nil)
|
|
14
|
+
@request = request
|
|
15
|
+
merge!(options) unless options.nil?
|
|
16
|
+
end
|
|
17
|
+
# rubocop:enable Lint/MissingSuper
|
|
18
|
+
|
|
19
|
+
def verb
|
|
20
|
+
self[:verb]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def verb=(value)
|
|
24
|
+
self[:verb] = value
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def path
|
|
28
|
+
self[:path]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def path=(value)
|
|
32
|
+
self[:path] = value
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def body
|
|
36
|
+
self[:body]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def body=(value)
|
|
40
|
+
self[:body] = value
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def headers
|
|
44
|
+
self[:headers] ||= {}
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def headers=(value)
|
|
48
|
+
self[:headers] = value
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def form
|
|
52
|
+
self[:form] ||= {}
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def form=(value)
|
|
56
|
+
self[:form] = value
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../../../core/transport/response'
|
|
4
|
+
|
|
5
|
+
module Datadog
|
|
6
|
+
module Core
|
|
7
|
+
module Transport
|
|
8
|
+
module HTTP
|
|
9
|
+
# Wraps an HTTP response from an adapter.
|
|
10
|
+
#
|
|
11
|
+
# Used by endpoints to wrap responses from adapters with
|
|
12
|
+
# fields or behavior that's specific to that endpoint.
|
|
13
|
+
module Response
|
|
14
|
+
def initialize(http_response)
|
|
15
|
+
@http_response = http_response
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# (see Datadog::Core::Transport::Response#payload)
|
|
19
|
+
def payload
|
|
20
|
+
@http_response.payload
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# (see Datadog::Core::Transport::Response#internal_error?)
|
|
24
|
+
def internal_error?
|
|
25
|
+
@http_response.internal_error?
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# (see Datadog::Core::Transport::Response#unsupported?)
|
|
29
|
+
def unsupported?
|
|
30
|
+
@http_response.unsupported?
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# (see Datadog::Core::Transport::Response#ok?)
|
|
34
|
+
def ok?
|
|
35
|
+
@http_response.ok?
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# (see Datadog::Core::Transport::Response#not_found?)
|
|
39
|
+
def not_found?
|
|
40
|
+
@http_response.not_found?
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# (see Datadog::Core::Transport::Response#client_error?)
|
|
44
|
+
def client_error?
|
|
45
|
+
@http_response.client_error?
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# (see Datadog::Core::Transport::Response#server_error?)
|
|
49
|
+
def server_error?
|
|
50
|
+
@http_response.server_error?
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def code
|
|
54
|
+
@http_response.respond_to?(:code) ? @http_response.code : nil
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Datadog
|
|
4
|
+
module Core
|
|
5
|
+
module Transport
|
|
6
|
+
# Data transfer object for generic data
|
|
7
|
+
# @abstract
|
|
8
|
+
module Parcel
|
|
9
|
+
attr_reader \
|
|
10
|
+
:data
|
|
11
|
+
|
|
12
|
+
def initialize(data)
|
|
13
|
+
@data = data
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def encode_with(encoder)
|
|
17
|
+
raise NotImplementedError
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|