class Optimizely::EventBuilder
Constants
- ACTIVATE_EVENT_KEY
- ENDPOINT
- POST_HEADERS
Public Instance Methods
create_conversion_event(project_config, event, user_id, attributes, event_tags)
click to toggle source
# File lib/optimizely/event_builder.rb, line 137 def create_conversion_event(project_config, event, user_id, attributes, event_tags) # Create conversion Event to be sent to the logging endpoint. # # project_config - +Object+ Instance of ProjectConfig # event - +Object+ Event which needs to be recorded. # user_id - +String+ ID for user. # attributes - +Hash+ representing user attributes and values which need to be recorded. # event_tags - +Hash+ representing metadata associated with the event. # # Returns +Event+ encapsulating the conversion event. event_params = get_common_params(project_config, user_id, attributes) conversion_params = get_conversion_params(event, event_tags) event_params[:visitors][0][:snapshots] = [conversion_params] Event.new(:post, ENDPOINT, event_params, POST_HEADERS) end
create_impression_event(project_config, experiment, variation_id, user_id, attributes)
click to toggle source
# File lib/optimizely/event_builder.rb, line 119 def create_impression_event(project_config, experiment, variation_id, user_id, attributes) # Create impression Event to be sent to the logging endpoint. # # project_config - +Object+ Instance of ProjectConfig # experiment - +Object+ Experiment for which impression needs to be recorded. # variation_id - +String+ ID for variation which would be presented to user. # user_id - +String+ ID for user. # attributes - +Hash+ representing user attributes and values which need to be recorded. # # Returns +Event+ encapsulating the impression event. event_params = get_common_params(project_config, user_id, attributes) impression_params = get_impression_params(project_config, experiment, variation_id) event_params[:visitors][0][:snapshots].push(impression_params) Event.new(:post, ENDPOINT, event_params, POST_HEADERS) end
Private Instance Methods
create_timestamp()
click to toggle source
# File lib/optimizely/event_builder.rb, line 216 def create_timestamp # Returns +Integer+ Current timestamp (Time.now.to_f * 1000).to_i end
create_uuid()
click to toggle source
# File lib/optimizely/event_builder.rb, line 222 def create_uuid # Returns +String+ Random UUID SecureRandom.uuid end
get_conversion_params(event, event_tags)
click to toggle source
# File lib/optimizely/event_builder.rb, line 186 def get_conversion_params(event, event_tags) # Creates object of params specific to conversion events # # event - +Object+ Event which needs to be recorded. # event_tags - +Hash+ Values associated with the event. # # Returns +Hash+ Conversion event params single_snapshot = {} event_object = { entity_id: event['id'], timestamp: create_timestamp, uuid: create_uuid, key: event['key'] } if event_tags revenue_value = Helpers::EventTagUtils.get_revenue_value(event_tags, @logger) event_object[:revenue] = revenue_value if revenue_value numeric_value = Helpers::EventTagUtils.get_numeric_value(event_tags, @logger) event_object[:value] = numeric_value if numeric_value event_object[:tags] = event_tags unless event_tags.empty? end single_snapshot[:events] = [event_object] single_snapshot end
get_impression_params(project_config, experiment, variation_id)
click to toggle source
# File lib/optimizely/event_builder.rb, line 157 def get_impression_params(project_config, experiment, variation_id) # Creates object of params specific to impression events # # project_config - +Object+ Instance of ProjectConfig # experiment - +Hash+ experiment for which impression needs to be recorded # variation_id - +string+ ID for variation which would be presented to user # # Returns +Hash+ Impression event params experiment_key = experiment['key'] experiment_id = experiment['id'] impression_event_params = { decisions: [{ campaign_id: project_config.experiment_key_map[experiment_key]['layerId'], experiment_id: experiment_id, variation_id: variation_id }], events: [{ entity_id: project_config.experiment_key_map[experiment_key]['layerId'], timestamp: create_timestamp, key: ACTIVATE_EVENT_KEY, uuid: create_uuid }] } impression_event_params end