Class: SplitIoClient::Cache::Senders::ImpressionsFormatter
- Inherits:
-
Object
- Object
- SplitIoClient::Cache::Senders::ImpressionsFormatter
- Defined in:
- lib/splitclient-rb/cache/senders/impressions_formatter.rb
Instance Method Summary collapse
- #call(raw_impressions) ⇒ Object
-
#initialize(impressions_repository) ⇒ ImpressionsFormatter
constructor
A new instance of ImpressionsFormatter.
Constructor Details
#initialize(impressions_repository) ⇒ ImpressionsFormatter
Returns a new instance of ImpressionsFormatter.
5 6 7 |
# File 'lib/splitclient-rb/cache/senders/impressions_formatter.rb', line 5 def initialize(impressions_repository) @impressions_repository = impressions_repository end |
Instance Method Details
#call(raw_impressions) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/splitclient-rb/cache/senders/impressions_formatter.rb', line 9 def call(raw_impressions) impressions = raw_impressions ? raw_impressions : @impressions_repository.clear formatted_impressions = [] filtered_impressions = filter_impressions(impressions) return [] if impressions.empty? || filtered_impressions.empty? formatted_impressions = unique_features(filtered_impressions).each_with_object([]) do |feature, memo| ip = nil current_impressions = filtered_impressions .select { |impression| impression[:feature] == feature } .map do |impression| ip = impression[:ip] { keyName: impression[:impressions]['keyName'] || impression[:impressions]['key_name'], treatment: impression[:impressions]['treatment'], time: impression[:impressions]['time'], bucketingKey: impression[:impressions]['bucketingKey'] || impression[:impressions]['bucketing_key'], label: impression[:impressions]['label'], changeNumber: impression[:impressions]['changeNumber'] || impression[:impressions]['change_number'], } end memo << { testName: feature, keyImpressions: current_impressions, ip: ip } end formatted_impressions end |