Class: Datadog::Tracing::Transport::HTTP::Builder
- Inherits:
-
Object
- Object
- Datadog::Tracing::Transport::HTTP::Builder
- Defined in:
- lib/datadog/tracing/transport/http/builder.rb
Overview
Builds new instances of Transport::HTTP::Client
Defined Under Namespace
Classes: NoAdapterForApiError, NoApisError, NoDefaultApiError, UnknownAdapterError, UnknownApiError
Constant Summary collapse
Instance Attribute Summary collapse
-
#api_options ⇒ Object
readonly
Returns the value of attribute api_options.
-
#apis ⇒ Object
readonly
Returns the value of attribute apis.
-
#default_adapter ⇒ Object
readonly
Returns the value of attribute default_adapter.
-
#default_api ⇒ Object
Returns the value of attribute default_api.
-
#default_headers ⇒ Object
readonly
Returns the value of attribute default_headers.
Instance Method Summary collapse
- #adapter(config, *args, **kwargs) ⇒ Object
-
#api(key, spec, options = {}) ⇒ Object
Adds a new API to the client Valid options: - :adapter - :default - :fallback - :headers.
- #api_instance_class ⇒ Object
- #headers(values = {}) ⇒ Object
-
#initialize {|_self| ... } ⇒ Builder
constructor
A new instance of Builder.
- #to_api_instances ⇒ Object
- #to_transport ⇒ Object
Constructor Details
#initialize {|_self| ... } ⇒ Builder
Returns a new instance of Builder.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/datadog/tracing/transport/http/builder.rb', line 24 def initialize # Global settings @default_adapter = nil @default_headers = {} # Client settings @apis = Datadog::Core::Transport::HTTP::API::Map.new @default_api = nil # API settings @api_options = {} yield(self) if block_given? end |
Instance Attribute Details
#api_options ⇒ Object (readonly)
Returns the value of attribute api_options.
17 18 19 |
# File 'lib/datadog/tracing/transport/http/builder.rb', line 17 def @api_options end |
#apis ⇒ Object (readonly)
Returns the value of attribute apis.
17 18 19 |
# File 'lib/datadog/tracing/transport/http/builder.rb', line 17 def apis @apis end |
#default_adapter ⇒ Object (readonly)
Returns the value of attribute default_adapter.
17 18 19 |
# File 'lib/datadog/tracing/transport/http/builder.rb', line 17 def default_adapter @default_adapter end |
#default_api ⇒ Object
Returns the value of attribute default_api.
17 18 19 |
# File 'lib/datadog/tracing/transport/http/builder.rb', line 17 def default_api @default_api end |
#default_headers ⇒ Object (readonly)
Returns the value of attribute default_headers.
17 18 19 |
# File 'lib/datadog/tracing/transport/http/builder.rb', line 17 def default_headers @default_headers end |
Instance Method Details
#adapter(config, *args, **kwargs) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/datadog/tracing/transport/http/builder.rb', line 39 def adapter(config, *args, **kwargs) @default_adapter = case config when Core::Configuration::AgentSettingsResolver::AgentSettings registry_klass = REGISTRY.get(config.adapter) raise UnknownAdapterError, config.adapter if registry_klass.nil? registry_klass.build(config) when Symbol registry_klass = REGISTRY.get(config) raise UnknownAdapterError, config if registry_klass.nil? registry_klass.new(*args, **kwargs) else config end end |
#api(key, spec, options = {}) ⇒ Object
Adds a new API to the client Valid options:
- :adapter
- :default
- :fallback
- :headers
66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/datadog/tracing/transport/http/builder.rb', line 66 def api(key, spec, = {}) = .dup # Copy spec into API map @apis[key] = spec # Apply as default API, if specified to do so. @default_api = key if .delete(:default) || @default_api.nil? # Save all other settings for initialization (@api_options[key] ||= {}).merge!() end |
#api_instance_class ⇒ Object
120 121 122 |
# File 'lib/datadog/tracing/transport/http/builder.rb', line 120 def api_instance_class API::Instance end |
#headers(values = {}) ⇒ Object
56 57 58 |
# File 'lib/datadog/tracing/transport/http/builder.rb', line 56 def headers(values = {}) @default_headers.merge!(values) end |
#to_api_instances ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/datadog/tracing/transport/http/builder.rb', line 92 def to_api_instances raise NoApisError if @apis.empty? @apis.inject(Datadog::Core::Transport::HTTP::API::Map.new) do |instances, (key, spec)| instances.tap do = @api_options[key].dup # Resolve the adapter to use for this API adapter = .delete(:adapter) || @default_adapter raise NoAdapterForApiError, key if adapter.nil? # Resolve fallback and merge headers fallback = .delete(:fallback) [:headers] = @default_headers.merge(([:headers] || {})) # Add API::Instance with all settings instances[key] = api_instance_class.new( spec, adapter, ) # Configure fallback, if provided. instances.with_fallbacks(key => fallback) unless fallback.nil? end end end |
#to_transport ⇒ Object
85 86 87 88 89 90 |
# File 'lib/datadog/tracing/transport/http/builder.rb', line 85 def to_transport raise NoDefaultApiError if @default_api.nil? # DEV: Should not be specific to traces Transport::Traces::Transport.new(to_api_instances, @default_api) end |