Class: Datadog::OpenFeature::Exposures::Reporter
- Inherits:
-
Object
- Object
- Datadog::OpenFeature::Exposures::Reporter
- Defined in:
- lib/datadog/open_feature/exposures/reporter.rb
Overview
This class is responsible for reporting exposures to the Agent
Instance Method Summary collapse
-
#initialize(worker, telemetry:, logger:) ⇒ Reporter
constructor
A new instance of Reporter.
-
#report(result, flag_key:, context:) ⇒ Object
NOTE: Reporting expects evaluation context to be always present, but it might be missing depending on the customer way of using flags evaluation API.
Constructor Details
#initialize(worker, telemetry:, logger:) ⇒ Reporter
Returns a new instance of Reporter.
11 12 13 14 15 16 |
# File 'lib/datadog/open_feature/exposures/reporter.rb', line 11 def initialize(worker, telemetry:, logger:) @worker = worker @logger = logger @telemetry = telemetry @deduplicator = Deduplicator.new end |
Instance Method Details
#report(result, flag_key:, context:) ⇒ Object
NOTE: Reporting expects evaluation context to be always present, but it
might be missing depending on the customer way of using flags evaluation API.
In addition to that the evaluation result must be marked for reporting.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/datadog/open_feature/exposures/reporter.rb', line 21 def report(result, flag_key:, context:) return false if context.nil? return false unless result.log? key = Event.cache_key(result, flag_key: flag_key, context: context) value = Event.cache_value(result, flag_key: flag_key, context: context) return false if @deduplicator.duplicate?(key, value) event = Event.build(result, flag_key: flag_key, context: context) @worker.enqueue(event) rescue => e @logger.debug { "OpenFeature: Failed to report resolution details: #{e.class}: #{e.message}" } @telemetry.report(e, description: 'OpenFeature: Failed to report resolution details') false end |