# frozen_string_literal: true require_relative "./utils" module Aspecto # Aspecto OpenTelemetry Distro module OpenTelemetry module Sampler # Aspecto's sampling rule condition class Condition def initialize(condition_config) @comparison = condition_config["comparison"]&.to_sym @value = condition_config["value"] @from = condition_config["from"]&.to_sym @key = condition_config["key"] end def satisfied?(attributes, span_name) case @from when :attribute Sampler.meets_operator?(@comparison, @value, attributes[@key]&.to_s) when :operation Sampler.meets_operator?(@comparison, @value, span_name) else # Other "from" are not implemented for now false end end end end end end