Module: VWO::Utils::Campaign

Includes:
CONSTANTS, Enums
Included in:
VWO, Core::VariationDecider, Services::SettingsFileProcessor
Defined in:
lib/vwo/utils/campaign.rb

Constant Summary

Constants included from CONSTANTS

CONSTANTS::API_VERSION, CONSTANTS::DEFAULT_EVENTS_PER_REQUEST, CONSTANTS::DEFAULT_REQUEST_TIME_INTERVAL, CONSTANTS::GOAL_TYPES, CONSTANTS::HTTPS_PROTOCOL, CONSTANTS::HTTP_PROTOCOL, CONSTANTS::LIBRARY_PATH, CONSTANTS::MAX_EVENTS_PER_REQUEST, CONSTANTS::MAX_RANGE, CONSTANTS::MAX_TRAFFIC_PERCENT, CONSTANTS::MAX_TRAFFIC_VALUE, CONSTANTS::MIN_EVENTS_PER_REQUEST, CONSTANTS::MIN_REQUEST_TIME_INTERVAL, CONSTANTS::PLATFORM, CONSTANTS::RUBY_VARIABLE_TYPES, CONSTANTS::SDK_NAME, CONSTANTS::SDK_VERSION, CONSTANTS::SEED_VALUE, CONSTANTS::STATUS_RUNNING, CONSTANTS::URL_NAMESPACE, CONSTANTS::VWO_DELIMITER

Instance Method Summary collapse

Instance Method Details

#get_campaign_goal(campaign, goal_identifier) ⇒ Object

Returns goal from given campaign_key and gaol_identifier. @param :campaign Campaign object @param :goal_identifier Goal identifier

@return Goal corresponding to Goal_identifier in respective campaign



85
86
87
88
89
90
91
# File 'lib/vwo/utils/campaign.rb', line 85

def get_campaign_goal(campaign, goal_identifier)
  return unless campaign && goal_identifier

  campaign['goals'].find do |goal|
    goal['identifier'] == goal_identifier
  end
end

#get_control_variation(campaign) ⇒ Object

Returns control variation from a given campaign @param campaign Running campaign @return variation Control variation from the campaign, ie having id = 1



105
106
107
108
109
# File 'lib/vwo/utils/campaign.rb', line 105

def get_control_variation(campaign)
  campaign['variations'].find do |variation|
    variation['id'] == 1
  end
end

#get_segments(campaign) ⇒ Object

Returns segments from the campaign @param campaign Running campaign @return A dsl of segments



97
98
99
# File 'lib/vwo/utils/campaign.rb', line 97

def get_segments(campaign)
  campaign['segments']
end

#get_variable(variables, variable_key) ⇒ Object

Returns variable from given variables list. @params variables List of variables, whether in campaigns or inside variation @param variable_key Variable identifier @return Variable corresponding to variable_key in given variable list



116
117
118
119
120
# File 'lib/vwo/utils/campaign.rb', line 116

def get_variable(variables, variable_key)
  variables.find do |variable|
    variable['key'] == variable_key
  end
end

#set_campaign_allocation(campaigns) ⇒ Object

Sets campaign allocation range in the provided campaigns list

Parameters:

  • : (Array)

    Array of Campaigns



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/vwo/utils/campaign.rb', line 62

def set_campaign_allocation(campaigns)
  current_allocation = 0
  campaigns.each do |campaign|
    step_factor = get_variation_bucketing_range(campaign['weight'])
    if step_factor > 0
      start_range = current_allocation + 1
      end_range = current_allocation + step_factor
      campaign['min_range'] = start_range
      campaign['max_range'] = end_range
      current_allocation += step_factor
    else
      campaign['min_range'] = -1
      campaign['max_range'] = -1
    end
  end
end

#set_variation_allocation(campaign) ⇒ Object

Sets variation allocation range in the provided campaign

Parameters:

  • : (Hash)

    Campaign object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/vwo/utils/campaign.rb', line 30

def set_variation_allocation(campaign)
  current_allocation = 0
  campaign['variations'].each do |variation|
    step_factor = get_variation_bucketing_range(variation['weight'])
    if step_factor > 0
      start_range = current_allocation + 1
      end_range = current_allocation + step_factor
      variation['start_variation_allocation'] = start_range
      variation['end_variation_allocation'] = end_range
      current_allocation += step_factor
    else
      variation['start_variation_allocation'] = -1
      variation['end_variation_allocation'] = -1
    end
    Logger.log(
      LogLevelEnum::DEBUG,
      'VARIATION_RANGE_ALLOCATION',
      {
        '{file}' => FileNameEnum::CAMPAIGN_UTIL,
        '{campaignKey}' => campaign['key'],
        '{variationName}' => variation['name'],
        '{variationWeight}' => variation['weight'],
        '{start}' => variation['start_variation_allocation'],
        '{end}' => variation['end_variation_allocation']
      }
    )
  end
end