class Datadog::Contrib::Configuration::Resolver
Resolves an integration-specific matcher to an associated object.
Integrations that perform any configuration matching based on patterns might want to override this class to provide richer matching. For example, match configuration based on: HTTP
request parameters, request headers, async queue name.
When overriding this class, for simple use cases, only overriding `#parse_matcher` might suffice. See `#parse_matcher`'s documentation for more information.
Attributes
Public Class Methods
# File lib/ddtrace/contrib/configuration/resolver.rb, line 20 def initialize @configurations = {} end
Public Instance Methods
Adds a new `matcher`, associating with it a `value`.
This `value` is returned when `#resolve` is called with a matching value for this matcher. When multiple matchers would match, `#resolve` returns the latest added one.
The `matcher` can be transformed internally by the `#parse_matcher` method before being stored.
The `value` can also be retrieved by calling `#get` with the same `matcher` added by this method.
@param [Object] matcher integration-specific matcher @param [Object] value arbitrary value to be associated with `matcher`
# File lib/ddtrace/contrib/configuration/resolver.rb, line 39 def add(matcher, value) @configurations[parse_matcher(matcher)] = value end
Retrieves the stored value for a `matcher` previously stored by `#add`.
@param [Object] matcher integration-specific matcher @return [Object] previously stored `value` from `#add`, or `nil` if not found
# File lib/ddtrace/contrib/configuration/resolver.rb, line 48 def get(matcher) @configurations[parse_matcher(matcher)] end
Matches an arbitrary value against the configured matchers previously set with `#add`.
If multiple matchers would match, returns the latest one.
@param [Object] value integration-specific value @return [Object] matching `value` configured at `#add`, or `nil` if none match
# File lib/ddtrace/contrib/configuration/resolver.rb, line 59 def resolve(value) @configurations[value] end
Protected Instance Methods
Converts `matcher` into an appropriate key for the internal Hash storage.
It's recommended to override this method, instead of the public methods, if the integration can simply convert both `matcher` (provided to `#add`) and `value` (provided to `#resolve`) to the same value.
@param [Object] matcher integration-specific matcher @return [Object] processed matcher
# File lib/ddtrace/contrib/configuration/resolver.rb, line 76 def parse_matcher(matcher) matcher end