1414# limitations under the License.
1515#
1616require_relative 'optimizely/audience'
17- require_relative 'optimizely/bucketer '
17+ require_relative 'optimizely/decision_service '
1818require_relative 'optimizely/error_handler'
1919require_relative 'optimizely/event_builder'
2020require_relative 'optimizely/event_dispatcher'
@@ -28,14 +28,14 @@ module Optimizely
2828 class Project
2929
3030 # Boolean representing if the instance represents a usable Optimizely Project
31- attr_reader :is_valid
31+ attr_reader :is_valid
3232
33- attr_accessor :config
34- attr_accessor :bucketer
35- attr_accessor :event_builder
36- attr_accessor :event_dispatcher
37- attr_accessor :logger
38- attr_accessor :error_handler
33+ attr_reader :config
34+ attr_reader :decision_service
35+ attr_reader :error_handler
36+ attr_reader :event_builder
37+ attr_reader :event_dispatcher
38+ attr_reader :logger
3939
4040 def initialize ( datafile , event_dispatcher = nil , logger = nil , error_handler = nil , skip_json_validation = false )
4141 # Constructor for Projects.
@@ -77,7 +77,7 @@ def initialize(datafile, event_dispatcher = nil, logger = nil, error_handler = n
7777 return
7878 end
7979
80- @bucketer = Bucketer . new ( @config )
80+ @decision_service = DecisionService . new ( @config )
8181 @event_builder = EventBuilderV2 . new ( @config )
8282 end
8383
@@ -135,24 +135,13 @@ def get_variation(experiment_key, user_id, attributes = nil)
135135 return nil
136136 end
137137
138- unless preconditions_valid? ( experiment_key , attributes )
138+ unless user_inputs_valid? ( attributes )
139139 @logger . log ( Logger ::INFO , "Not activating user '#{ user_id } ." )
140140 return nil
141141 end
142142
143- variation_id = @bucketer . get_forced_variation_id ( experiment_key , user_id )
143+ variation_id = @decision_service . get_variation ( experiment_key , user_id , attributes )
144144
145- unless variation_id . nil?
146- return @config . get_variation_key_from_id ( experiment_key , variation_id )
147- end
148-
149- unless Audience . user_in_experiment? ( @config , experiment_key , attributes )
150- @logger . log ( Logger ::INFO ,
151- "User '#{ user_id } ' does not meet the conditions to be in experiment '#{ experiment_key } '." )
152- return nil
153- end
154-
155- variation_id = @bucketer . bucket ( experiment_key , user_id )
156145 unless variation_id . nil?
157146 return @config . get_variation_key_from_id ( experiment_key , variation_id )
158147 end
@@ -240,25 +229,6 @@ def get_valid_experiments_for_event(event_key, user_id, attributes)
240229 valid_experiments
241230 end
242231
243- def preconditions_valid? ( experiment_key , attributes = nil , event_tags = nil )
244- # Validates preconditions for bucketing a user.
245- #
246- # experiment_key - String key for an experiment.
247- # user_id - String ID of user.
248- # attributes - Hash of user attributes.
249- #
250- # Returns boolean representing whether all preconditions are valid.
251-
252- return false unless user_inputs_valid? ( attributes , event_tags )
253-
254- unless @config . experiment_running? ( experiment_key )
255- @logger . log ( Logger ::INFO , "Experiment '#{ experiment_key } ' is not running." )
256- return false
257- end
258-
259- true
260- end
261-
262232 def user_inputs_valid? ( attributes = nil , event_tags = nil )
263233 # Helper method to validate user inputs.
264234 #
0 commit comments