Skip to content

Commit 1d7122c

Browse files
authored
Remove V1 code (#39)
1 parent c6c9fc7 commit 1d7122c

13 files changed

+249
-1094
lines changed

lib/optimizely.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#
2-
# Copyright 2016, Optimizely and contributors
2+
# Copyright 2016-2017, Optimizely and contributors
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -38,7 +38,6 @@ class Project
3838
attr_accessor :error_handler
3939

4040
EVENT_BUILDERS_BY_VERSION = {
41-
Optimizely::V1_CONFIG_VERSION => EventBuilderV1,
4241
Optimizely::V2_CONFIG_VERSION => EventBuilderV2
4342
}
4443

@@ -75,14 +74,15 @@ def initialize(datafile, event_dispatcher = nil, logger = nil, error_handler = n
7574
return
7675
end
7776

78-
begin
79-
@bucketer = Bucketer.new(@config)
80-
@event_builder = EVENT_BUILDERS_BY_VERSION[@config.version].new(@config, @bucketer)
81-
rescue
77+
unless @config.parsing_succeeded?
8278
@is_valid = false
8379
logger = SimpleLogger.new
84-
logger.log(Logger::ERROR, InvalidDatafileVersionError.new)
80+
logger.log(Logger::ERROR, InvalidDatafileVersionError.new.message)
81+
return
8582
end
83+
84+
@bucketer = Bucketer.new(@config)
85+
@event_builder = EVENT_BUILDERS_BY_VERSION[@config.version].new(@config, @bucketer)
8686
end
8787

8888
def activate(experiment_key, user_id, attributes = nil)

lib/optimizely/event_builder.rb

Lines changed: 0 additions & 158 deletions
Original file line numberDiff line numberDiff line change
@@ -234,162 +234,4 @@ def add_time
234234
@params['timestamp'] = (Time.now.to_f * 1000).to_i
235235
end
236236
end
237-
238-
class EventBuilderV1 < BaseEventBuilder
239-
# Class which encapsulates methods to build events for tracking impressions and conversions.
240-
241-
# Attribute mapping format
242-
ATTRIBUTE_PARAM_FORMAT = '%{segment_prefix}%{segment_id}'
243-
244-
# Experiment mapping format
245-
EXPERIMENT_PARAM_FORMAT = '%{experiment_prefix}%{experiment_id}'
246-
247-
# Event endpoint path
248-
OFFLINE_API_PATH = 'https://%{project_id}.log.optimizely.com/event'
249-
250-
def create_impression_event(experiment_key, variation_id, user_id, attributes)
251-
# Create conversion Event to be sent to the logging endpoint.
252-
#
253-
# experiment_key - Experiment for which impression needs to be recorded.
254-
# variation_id - ID for variation which would be presented to user.
255-
# user_id - ID for user.
256-
# attributes - Hash representing user attributes and values which need to be recorded.
257-
#
258-
# Returns event hash encapsulating the impression event.
259-
260-
@params = {}
261-
add_common_params(user_id, attributes)
262-
add_impression_goal(experiment_key)
263-
add_experiment(experiment_key, variation_id)
264-
Event.new(:get, sprintf(OFFLINE_API_PATH, project_id: @params[Params::PROJECT_ID]), @params, {})
265-
end
266-
267-
def create_conversion_event(event_key, user_id, attributes, event_tags, experiment_keys)
268-
# Create conversion Event to be sent to the logging endpoint.
269-
#
270-
# event_key - Goal key representing the event which needs to be recorded.
271-
# user_id - ID for user.
272-
# attributes - Hash representing user attributes and values which need to be recorded.
273-
# event_tags - Hash representing metadata associated with the event.
274-
# experiment_keys - Array of valid experiment keys for the goal
275-
#
276-
# Returns event hash encapsulating the conversion event.
277-
278-
@params = {}
279-
280-
event_value = Helpers::EventTagUtils.get_revenue_value(event_tags)
281-
282-
add_common_params(user_id, attributes)
283-
add_conversion_goal(event_key, event_value)
284-
add_experiment_variation_params(user_id, experiment_keys)
285-
Event.new(:get, sprintf(OFFLINE_API_PATH, project_id: @params[Params::PROJECT_ID]), @params, {})
286-
end
287-
288-
private
289-
290-
def add_project_id
291-
# Add project ID to the event.
292-
293-
@params[Params::PROJECT_ID] = @config.project_id
294-
end
295-
296-
def add_account_id
297-
# Add account ID to the event.
298-
299-
@params[Params::ACCOUNT_ID] = @config.account_id
300-
end
301-
302-
def add_user_id(user_id)
303-
# Add user ID to the event.
304-
305-
@params[Params::END_USER_ID] = user_id
306-
end
307-
308-
def add_attributes(attributes)
309-
# Add attribute(s) information to the event.
310-
#
311-
# attributes - Hash representing user attributes and values which need to be recorded.
312-
313-
return if attributes.nil?
314-
315-
attributes.keys.each do |attribute_key|
316-
attribute_value = attributes[attribute_key]
317-
next unless attribute_value
318-
319-
# Skip attributes not in the datafile
320-
segment_id = @config.get_segment_id(attribute_key)
321-
next unless segment_id
322-
segment_param = sprintf(ATTRIBUTE_PARAM_FORMAT,
323-
segment_prefix: Params::SEGMENT_PREFIX, segment_id: segment_id)
324-
params[segment_param] = attribute_value
325-
end
326-
end
327-
328-
def add_source
329-
# Add source information to the event.
330-
331-
@params[Params::SOURCE] = sprintf('ruby-sdk-%{version}', version: VERSION)
332-
end
333-
334-
def add_time
335-
# Add time information to the event.
336-
337-
@params[Params::TIME] = Time.now.strftime('%s').to_i
338-
end
339-
340-
def add_impression_goal(experiment_key)
341-
# Add impression goal information to the event.
342-
#
343-
# experiment_key - Experiment which is being activated.
344-
345-
# For tracking impressions, goal ID is set equal to experiment ID of experiment being activated.
346-
@params[Params::GOAL_ID] = @config.get_experiment_id(experiment_key)
347-
@params[Params::GOAL_NAME] = 'visitor-event'
348-
end
349-
350-
def add_experiment(experiment_key, variation_id)
351-
# Add experiment to variation mapping to the impression event.
352-
#
353-
# experiment_key - Experiment which is being activated.
354-
# variation_id - ID for variation which would be presented to user.
355-
356-
experiment_id = @config.get_experiment_id(experiment_key)
357-
experiment_param = sprintf(EXPERIMENT_PARAM_FORMAT,
358-
experiment_prefix: Params::EXPERIMENT_PREFIX, experiment_id: experiment_id)
359-
@params[experiment_param] = variation_id
360-
end
361-
362-
def add_experiment_variation_params(user_id, experiment_keys)
363-
# Maps experiment and corresponding variation as parameters to be used in the event tracking call.
364-
#
365-
# user_id - ID for user.
366-
# experiment_keys - Array of valid experiment keys for the goal
367-
368-
experiment_keys.each do |experiment_key|
369-
variation_id = @bucketer.bucket(experiment_key, user_id)
370-
experiment_id = @config.experiment_key_map[experiment_key]['id']
371-
experiment_param = sprintf(EXPERIMENT_PARAM_FORMAT,
372-
experiment_prefix: Params::EXPERIMENT_PREFIX, experiment_id: experiment_id)
373-
@params[experiment_param] = variation_id
374-
end
375-
end
376-
377-
def add_conversion_goal(event_key, event_value)
378-
# Add conversion goal information to the event.
379-
#
380-
# event_key - Goal key representing the event which needs to be recorded.
381-
# event_value - Value associated with the event. Can be used to represent revenue in cents.
382-
383-
goal_id = @config.event_key_map[event_key]['id']
384-
event_ids = goal_id
385-
386-
if event_value
387-
event_ids = sprintf('%{goal_id},%{revenue_id}', goal_id: goal_id, revenue_id: @config.get_revenue_goal_id)
388-
@params[Params::EVENT_VALUE] = event_value
389-
end
390-
391-
@params[Params::GOAL_ID] = event_ids
392-
@params[Params::GOAL_NAME] = event_key
393-
end
394-
end
395237
end

lib/optimizely/exceptions.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#
2-
# Copyright 2016, Optimizely and contributors
2+
# Copyright 2016-2017, Optimizely and contributors
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -83,7 +83,7 @@ def initialize(aborted_method)
8383
class InvalidDatafileVersionError < Error
8484
# Raised when a datafile with an unsupported version is provided
8585

86-
def initialize(msg = 'Provided datafile is an unsupported version.')
86+
def initialize(msg = 'Provided datafile is an unsupported version. Please use SDK version 1.1.2 or earlier for datafile version 1.')
8787
super
8888
end
8989
end

0 commit comments

Comments
 (0)