Skip to content

Commit ccacb22

Browse files
rashidspmikeproeng37
authored andcommitted
(feat): Implements ProjectConfig interface and creates DatafileProjectConfig. (#177)
1 parent e29462f commit ccacb22

14 files changed

+485
-399
lines changed

.rubocop_todo.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Lint/HandleExceptions:
1414
# Offense count: 1
1515
Lint/LiteralAsCondition:
1616
Exclude:
17-
- 'lib/optimizely/project_config.rb'
17+
- 'lib/optimizely/config/datafile_project_config.rb'
1818

1919
# Offense count: 1
2020
# Configuration parameters: CountKeywordArgs.

lib/optimizely.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
# limitations under the License.
1717
#
1818
require_relative 'optimizely/audience'
19+
require_relative 'optimizely/config/datafile_project_config'
1920
require_relative 'optimizely/decision_service'
2021
require_relative 'optimizely/error_handler'
2122
require_relative 'optimizely/event_builder'
@@ -27,7 +28,6 @@
2728
require_relative 'optimizely/helpers/variable_type'
2829
require_relative 'optimizely/logger'
2930
require_relative 'optimizely/notification_center'
30-
require_relative 'optimizely/project_config'
3131

3232
module Optimizely
3333
class Project
@@ -63,7 +63,7 @@ def initialize(datafile, event_dispatcher = nil, logger = nil, error_handler = n
6363
end
6464

6565
begin
66-
@config = ProjectConfig.new(datafile, @logger, @error_handler)
66+
@config = DatafileProjectConfig.new(datafile, @logger, @error_handler)
6767
rescue StandardError => e
6868
@is_valid = false
6969
@logger = SimpleLogger.new
@@ -236,12 +236,12 @@ def track(event_key, user_id, attributes = nil, event_tags = nil)
236236

237237
event = @config.get_event_from_key(event_key)
238238
unless event
239-
@config.logger.log(Logger::INFO, "Not tracking user '#{user_id}' for event '#{event_key}'.")
239+
@logger.log(Logger::INFO, "Not tracking user '#{user_id}' for event '#{event_key}'.")
240240
return nil
241241
end
242242

243243
conversion_event = @event_builder.create_conversion_event(@config, event, user_id, attributes, event_tags)
244-
@config.logger.log(Logger::INFO, "Tracking event '#{event_key}' for user '#{user_id}'.")
244+
@logger.log(Logger::INFO, "Tracking event '#{event_key}' for user '#{user_id}'.")
245245
@logger.log(Logger::INFO,
246246
"Dispatching conversion event to URL #{conversion_event.url} with params #{conversion_event.params}.")
247247
begin
@@ -506,7 +506,7 @@ def get_feature_variable_for_type(feature_flag_key, variable_key, variable_type,
506506

507507
variable = @config.get_feature_variable(feature_flag, variable_key)
508508

509-
# Error message logged in ProjectConfig- get_feature_flag_from_key
509+
# Error message logged in DatafileProjectConfig- get_feature_flag_from_key
510510
return nil if variable.nil?
511511

512512
feature_enabled = false

lib/optimizely/audience.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ module Optimizely
2424
module Audience
2525
module_function
2626

27-
def user_in_experiment?(config, experiment, attributes)
27+
def user_in_experiment?(config, experiment, attributes, logger)
2828
# Determine for given experiment if user satisfies the audiences for the experiment.
2929
#
3030
# config - Representation of the Optimizely project config.
@@ -36,7 +36,7 @@ def user_in_experiment?(config, experiment, attributes)
3636

3737
audience_conditions = experiment['audienceConditions'] || experiment['audienceIds']
3838

39-
config.logger.log(
39+
logger.log(
4040
Logger::DEBUG,
4141
format(
4242
Helpers::Constants::AUDIENCE_EVALUATION_LOGS['EVALUATING_AUDIENCES_COMBINED'],
@@ -47,7 +47,7 @@ def user_in_experiment?(config, experiment, attributes)
4747

4848
# Return true if there are no audiences
4949
if audience_conditions.empty?
50-
config.logger.log(
50+
logger.log(
5151
Logger::INFO,
5252
format(
5353
Helpers::Constants::AUDIENCE_EVALUATION_LOGS['AUDIENCE_EVALUATION_RESULT_COMBINED'],
@@ -60,7 +60,7 @@ def user_in_experiment?(config, experiment, attributes)
6060

6161
attributes ||= {}
6262

63-
custom_attr_condition_evaluator = CustomAttributeConditionEvaluator.new(attributes, config.logger)
63+
custom_attr_condition_evaluator = CustomAttributeConditionEvaluator.new(attributes, logger)
6464

6565
evaluate_custom_attr = lambda do |condition|
6666
return custom_attr_condition_evaluator.evaluate(condition)
@@ -71,7 +71,7 @@ def user_in_experiment?(config, experiment, attributes)
7171
return nil unless audience
7272

7373
audience_conditions = audience['conditions']
74-
config.logger.log(
74+
logger.log(
7575
Logger::DEBUG,
7676
format(
7777
Helpers::Constants::AUDIENCE_EVALUATION_LOGS['EVALUATING_AUDIENCE'],
@@ -83,7 +83,7 @@ def user_in_experiment?(config, experiment, attributes)
8383
audience_conditions = JSON.parse(audience_conditions) if audience_conditions.is_a?(String)
8484
result = ConditionTreeEvaluator.evaluate(audience_conditions, evaluate_custom_attr)
8585
result_str = result.nil? ? 'UNKNOWN' : result.to_s.upcase
86-
config.logger.log(
86+
logger.log(
8787
Logger::INFO,
8888
format(Helpers::Constants::AUDIENCE_EVALUATION_LOGS['AUDIENCE_EVALUATION_RESULT'], audience_id, result_str)
8989
)
@@ -94,7 +94,7 @@ def user_in_experiment?(config, experiment, attributes)
9494

9595
eval_result ||= false
9696

97-
config.logger.log(
97+
logger.log(
9898
Logger::INFO,
9999
format(
100100
Helpers::Constants::AUDIENCE_EVALUATION_LOGS['AUDIENCE_EVALUATION_RESULT_COMBINED'],

lib/optimizely/bucketer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def bucket(project_config, experiment, bucketing_id, user_id)
5151
experiment_key = experiment['key']
5252
group_id = experiment['groupId']
5353
if group_id
54-
group = project_config.group_key_map.fetch(group_id)
54+
group = project_config.group_id_map.fetch(group_id)
5555
if Helpers::Group.random_policy?(group)
5656
traffic_allocations = group.fetch('trafficAllocation')
5757
bucketed_experiment_id = find_bucket(bucketing_id, user_id, group_id, traffic_allocations)

0 commit comments

Comments
 (0)