@@ -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