2424require_relative 'optimizely/helpers/validator'
2525require_relative 'optimizely/helpers/variable_type'
2626require_relative 'optimizely/logger'
27+ require_relative 'optimizely/notification_center'
2728require_relative 'optimizely/project_config'
2829
2930module Optimizely
@@ -38,6 +39,7 @@ class Project
3839 attr_reader :event_builder
3940 attr_reader :event_dispatcher
4041 attr_reader :logger
42+ attr_reader :notification_center
4143
4244 def initialize ( datafile , event_dispatcher = nil , logger = nil , error_handler = nil , skip_json_validation = false , user_profile_service = nil )
4345 # Constructor for Projects.
@@ -83,6 +85,7 @@ def initialize(datafile, event_dispatcher = nil, logger = nil, error_handler = n
8385
8486 @decision_service = DecisionService . new ( @config , @user_profile_service )
8587 @event_builder = EventBuilder . new ( @config )
88+ @notification_center = NotificationCenter . new ( @logger , @error_handler )
8689 end
8790
8891 def activate ( experiment_key , user_id , attributes = nil )
@@ -231,6 +234,10 @@ def track(event_key, user_id, attributes = nil, event_tags = nil)
231234 rescue => e
232235 @logger . log ( Logger ::ERROR , "Unable to dispatch conversion event. Error: #{ e } " )
233236 end
237+ @notification_center . send_notifications (
238+ NotificationCenter ::NOTIFICATION_TYPES [ :TRACK ] ,
239+ event_key , user_id , attributes , event_tags , conversion_event
240+ )
234241 end
235242
236243 def is_feature_enabled ( feature_flag_key , user_id , attributes = nil )
@@ -512,6 +519,11 @@ def send_impression(experiment, variation_key, user_id, attributes = nil)
512519 rescue => e
513520 @logger . log ( Logger ::ERROR , "Unable to dispatch impression event. Error: #{ e } " )
514521 end
522+ variation = @config . get_variation_from_id ( experiment_key , variation_id )
523+ @notification_center . send_notifications (
524+ NotificationCenter ::NOTIFICATION_TYPES [ :ACTIVATE ] ,
525+ experiment , user_id , attributes , variation , impression_event
526+ )
515527 end
516528 end
517529end
0 commit comments