Skip to content

Commit 897c28f

Browse files
committed
polish
1 parent d977a91 commit 897c28f

1 file changed

Lines changed: 31 additions & 10 deletions

File tree

lib/splitclient-rb/engine/common/impressions_manager.rb

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,22 @@ def initialize(config,
2020

2121
def build_impression(matching_key, bucketing_key, split_name, treatment_data, impressions_disabled, params = {},
2222
evaluation_options = nil)
23-
properties = evaluation_options.nil? ? nil : evaluation_options.properties
23+
properties = get_properties(evaluation_options)
2424
impression_data = impression_data(matching_key, bucketing_key, split_name, treatment_data, params[:time], properties)
25+
return impression(impression_data, params[:attributes]) if check_return_conditions(properties)
26+
2527
begin
26-
if @config.impressions_mode == :none || impressions_disabled
28+
if check_none_mode(impressions_disabled)
2729
@impression_counter.inc(split_name, impression_data[:m])
2830
@unique_keys_tracker.track(split_name, matching_key)
29-
elsif @config.impressions_mode == :debug # In DEBUG mode we should calculate the pt only.
30-
return impression(impression_data, params[:attributes]) unless properties.nil?
31-
32-
impression_data[:pt] = @impression_observer.test_and_set(impression_data)
33-
else # In OPTIMIZED mode we should track the total amount of evaluations and deduplicate the impressions.
34-
return impression(impression_data, params[:attributes]) unless properties.nil?
35-
31+
end
32+
if check_observe_impressions
33+
# In DEBUG mode we should calculate the pt only.
3634
impression_data[:pt] = @impression_observer.test_and_set(impression_data)
37-
@impression_counter.inc(split_name, impression_data[:m]) unless impression_data[:pt].nil?
35+
end
36+
if check_impression_counter(impression_data)
37+
# In OPTIMIZED mode we should track the total amount of evaluations and deduplicate the impressions.
38+
@impression_counter.inc(split_name, impression_data[:m])
3839
end
3940
rescue StandardError => e
4041
@config.log_found_exception(__method__.to_s, e)
@@ -67,6 +68,26 @@ def track(impressions_decorator)
6768

6869
private
6970

71+
def check_return_conditions(properties)
72+
return (@config.impressions_mode == :debug || @config.impressions_mode == :optimized) && !properties.nil?
73+
end
74+
75+
def check_none_mode(impressions_disabled)
76+
return @config.impressions_mode == :none || impressions_disabled
77+
end
78+
79+
def check_observe_impressions
80+
return @config.impressions_mode == :debug || @config.impressions_mode == :optimized
81+
end
82+
83+
def check_impression_counter(impression_data)
84+
return @config.impressions_mode == :optimized && !impression_data[:pt].nil?
85+
end
86+
87+
def get_properties(evaluation_options)
88+
return evaluation_options.nil? ? nil : evaluation_options.properties
89+
end
90+
7091
def impression_router
7192
@impression_router ||= SplitIoClient::ImpressionRouter.new(@config)
7293
rescue StandardError => e

0 commit comments

Comments
 (0)