vwo-sdk 1.22.0 → 1.24.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 84d01560f605a69e8ed011a19ba4e3aae0f67341fd653a562d817801d6a55073
4
- data.tar.gz: b1355bef1b2b095774c702a6757c1a7141e2cf9758d0a1b8a0510111a8ee597a
3
+ metadata.gz: bb7f9b19ca3bcec001ea97863046b3d33f3806e8a3b4b0fb76d3d3be0dbe1e41
4
+ data.tar.gz: 30357fe06aeb296f73fcc8699baf89e9c291a1dd3d44bb7e57c6be7f4317aa13
5
5
  SHA512:
6
- metadata.gz: cc2c8a411e3c0a674ab2bc00e540b3e49a8dd943ec50aa04fba04839ef6f3e255fc275529f872aa5ca73dfe893cb43e8853a0875cc3dda9330554b6491590947
7
- data.tar.gz: 5482e79564a365ec8fe4012b25997096352129e915daca28774c790c416a528302ea1f0bb685ef559b9ee0846b0229957a8f6ab77008f4e48222a7cae5892699
6
+ metadata.gz: 171a4e3783e5efd552f8e327deece79d4152a6221cb64efc35d544ba6a806b6eb498587683386e927bf22a2cd7fd6e69cdeb986a3ceec46520203ce513cba169
7
+ data.tar.gz: 8bf89ba2183b67b158dc0d97cdcf691abde8ea3d30325ab0677dd8e3f9236b72ec55c734c28464fca08420f00028d7ec2b717c64a233822e65292f46cad25b61
data/lib/vwo/constants.rb CHANGED
@@ -27,7 +27,7 @@ class VWO
27
27
  HTTP_PROTOCOL = 'http://'
28
28
  HTTPS_PROTOCOL = 'https://'
29
29
  URL_NAMESPACE = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'
30
- SDK_VERSION = '1.22.0'
30
+ SDK_VERSION = '1.24.0'
31
31
  SDK_NAME = 'ruby'
32
32
  VWO_DELIMITER = '_vwo_'
33
33
  MAX_EVENTS_PER_REQUEST = 5000
@@ -95,6 +95,10 @@ class VWO
95
95
  :vwo_user_id => generator_for(user_id, @settings_file['accountId'])
96
96
  }
97
97
 
98
+ if campaign.has_key?("name")
99
+ decision[:campaign_name] = campaign['name']
100
+ end
101
+
98
102
  if is_campaign_part_of_group
99
103
  group_id = @settings_file["campaignGroups"][campaign["id"].to_s]
100
104
  decision[:group_id] = group_id
@@ -459,10 +463,19 @@ class VWO
459
463
  # @return[Hash]
460
464
 
461
465
  def evaluate_whitelisting(user_id, campaign, api_name, campaign_key, variation_targeting_variables = {}, disable_logs = false)
462
- if variation_targeting_variables.nil?
463
- variation_targeting_variables = { '_vwo_user_id' => user_id }
466
+ if campaign.key?('isUserListEnabled') && campaign["isUserListEnabled"]
467
+ vwo_user_id = generator_for(user_id, @settings_file['accountId'])
468
+ if variation_targeting_variables.nil?
469
+ variation_targeting_variables = { _vwo_user_id: vwo_user_id }
470
+ else
471
+ variation_targeting_variables[:_vwo_user_id] = vwo_user_id
472
+ end
464
473
  else
465
- variation_targeting_variables['_vwo_user_id'] = user_id
474
+ if variation_targeting_variables.nil?
475
+ variation_targeting_variables = { _vwo_user_id: user_id }
476
+ else
477
+ variation_targeting_variables[:_vwo_user_id] = user_id
478
+ end
466
479
  end
467
480
  targeted_variations = []
468
481
 
@@ -485,7 +498,7 @@ class VWO
485
498
  user_id: user_id,
486
499
  status: status,
487
500
  custom_variables: variation_targeting_variables,
488
- variation_name: variation['name'],
501
+ variation_name: status == StatusEnum::PASSED ? (campaign['type'] == CampaignTypes::FEATURE_ROLLOUT ? 'and hence becomes part of the rollout' : "for " + variation['name']) : '',
489
502
  segmentation_type: SegmentationTypeEnum::WHITELISTING,
490
503
  api_name: api_name
491
504
  ),
@@ -717,7 +730,7 @@ class VWO
717
730
 
718
731
  group_campaigns.each do |campaign|
719
732
  if called_campaign["id"] == campaign["id"] || check_presegmentation(campaign, user_id, custom_variables, '', true) && @bucketer.user_part_of_campaign?(user_id, campaign)
720
- eligible_campaigns.append(campaign)
733
+ eligible_campaigns.push(campaign)
721
734
  end
722
735
  end
723
736
  return eligible_campaigns
@@ -748,7 +761,7 @@ class VWO
748
761
  def get_eligible_campaigns_key(eligible_campaigns)
749
762
  eligible_campaigns_key = []
750
763
  eligible_campaigns.each do |campaign|
751
- eligible_campaigns_key.append(campaign["key"])
764
+ eligible_campaigns_key.push(campaign["key"])
752
765
  end
753
766
  eligible_campaigns_key
754
767
  end
@@ -763,7 +776,7 @@ class VWO
763
776
  non_eligible_campaigns_key = []
764
777
  group_campaigns.each do |campaign|
765
778
  unless eligible_campaigns.include? campaign
766
- non_eligible_campaigns_key.append(campaign["key"])
779
+ non_eligible_campaigns_key.push(campaign["key"])
767
780
  end
768
781
  end
769
782
  non_eligible_campaigns_key
@@ -865,8 +878,8 @@ class VWO
865
878
  campaign_key: campaign_key,
866
879
  user_id: user_id,
867
880
  status: status,
868
- custom_variables: variation_targeting_variables,
869
- variation_name: status == StatusEnum::PASSED ? "and #{variation['name']} is Assigned" : ' ',
881
+ custom_variables: variation_targeting_variables ? variation_targeting_variables : {},
882
+ variation_name: (status == StatusEnum::PASSED && campaign['type'] != CampaignTypes::FEATURE_ROLLOUT) ? "and #{variation['name']} is Assigned" : ' ',
870
883
  segmentation_type: SegmentationTypeEnum::WHITELISTING,
871
884
  api_name: api_name
872
885
  ),
@@ -879,10 +892,9 @@ class VWO
879
892
  decision[:variation_id] = variation['id']
880
893
  if campaign['type'] == CampaignTypes::FEATURE_TEST
881
894
  decision[:is_feature_enabled] = variation['isFeatureEnabled']
882
- elsif campaign['type'] == CampaignTypes::VISUAL_AB
883
- decision[:is_user_whitelisted] = !!variation['name']
884
895
  end
885
896
  end
897
+ decision[:is_user_whitelisted] = true
886
898
  @hooks_manager.execute(decision)
887
899
  end
888
900
 
data/lib/vwo/enums.rb CHANGED
@@ -106,7 +106,7 @@ class VWO
106
106
  IMPRESSION_FOR_TRACK_USER = '(%<file>s): Impression built for track-user - %<properties>s'
107
107
  IMPRESSION_FOR_TRACK_GOAL = '(%<file>s): Impression built for track-goal - %<properties>s'
108
108
  GOT_VARIATION_FOR_USER = '(%<file>s): userId:%<user_id>s for campaign:%<campaign_key>s got variationName:%<variation_name>s'
109
- SEGMENTATION_STATUS = '(%<file>s): In API: %<api_name>s, for UserId:%<user_id>s of campaign:%<campaign_key>s with variables:%<custom_variables>s %<status>s %<segmentation_type>s for %<variation_name>s'
109
+ SEGMENTATION_STATUS = '(%<file>s): In API: %<api_name>s, for UserId:%<user_id>s of campaign:%<campaign_key>s with variables:%<custom_variables>s %<status>s %<segmentation_type>s %<variation_name>s'
110
110
  PARAMS_FOR_PUSH_CALL = '(%<file>s): Params for push call - %<properties>s'
111
111
  CAMPAIGN_NOT_ACTIVATED = '(%<file>s): Campaign:%<campaign_key>s for User ID:%<user_id>s is not yet activated for API:%<api_name>s. Use activate API to activate A/B test or isFeatureEnabled API to activate Feature Test.'
112
112
  BATCH_EVENT_LIMIT_EXCEEDED = '(%<file>s): Impression event - %<end_point>s failed due to exceeding payload size. Parameter eventsPerRequest in batchEvents config in launch API has value:%<eventsPerRequest>s for accountId:%<accountId>s. Please read the official documentation for knowing the size limits.'
@@ -128,9 +128,9 @@ class VWO
128
128
  AUDIENCE_CONDITION_NOT_MET = '(%<file>s): userId:%<user_id>s does not become part of campaign because of not meeting audience conditions'
129
129
  GOT_VARIATION_FOR_USER = '(%<file>s): userId:%<user_id>s for campaign:%<campaign_key>s got variationName:%<variation_name>s'
130
130
  USER_GOT_NO_VARIATION = '(%<file>s): userId:%<user_id>s for campaign:%<campaign_key>s did not allot any variation'
131
- IMPRESSION_SUCCESS = '(%<file>s): Impression event - %<end_point>s was successfully received by VWO having main keys: sdkKey:%<sdk_key>s accountId:%<account_id>s campaignId:%<campaign_id>s and variationId:%<variation_id>s'
132
- MAIN_KEYS_FOR_IMPRESSION = '(%<file>s): Having main keys: {sdkKey:%<sdk_key>s accountId:%<account_id>s campaignId:%<campaign_id>s and variationId:%<variation_id>s}'
133
- MAIN_KEYS_FOR_PUSH_API = '(%<file>s): Having main keys: {sdkKey:%<sdk_key>s accountId:%<account_id>s u:%<u>s and tags:%<tags>s}'
131
+ IMPRESSION_SUCCESS = '(%<file>s): Impression event - %<end_point>s was successfully received by VWO having main keys: accountId:%<account_id>s campaignId:%<campaign_id>s and variationId:%<variation_id>s'
132
+ MAIN_KEYS_FOR_IMPRESSION = '(%<file>s): Having main keys: accountId:%<account_id>s campaignId:%<campaign_id>s and variationId:%<variation_id>s}'
133
+ MAIN_KEYS_FOR_PUSH_API = '(%<file>s): Having main keys: accountId:%<account_id>s u:%<u>s and tags:%<tags>s}'
134
134
  INVALID_VARIATION_KEY = '(%<file>s): Variation was not assigned to userId:%<user_id>s for campaign:%<campaign_key>s'
135
135
 
136
136
  USER_IN_FEATURE_ROLLOUT = '(%<file>s): User ID:%<user_id>s is in feature rollout:%<campaign_key>s'
@@ -143,7 +143,7 @@ class VWO
143
143
  USER_PASSED_SEGMENTATION = '(%<file>s): UserId:%<user_id>s of campaign:%<campaign_key>s with custom_variables:%<custom_variables>s passed segmentation'
144
144
  USER_FAILED_SEGMENTATION = '(%<file>s): UserId:%<user_id>s of campaign:%<campaign_key>s with custom_variables:%<custom_variables>s failed segmentation'
145
145
 
146
- NO_CUSTOM_VARIABLES = '(%<file>s): In API: %<api_name>s, for UserId:%<user_id>s preSegments/customVariables are not passed for campaign:%<campaign_key>s and campaign has pre-segmentation'
146
+ NO_CUSTOM_VARIABLES = '(%<file>s): In API: %<api_name>s, for UserId:%<user_id>s customVariables are not passed for campaign:%<campaign_key>s and campaign has pre-segmentation'
147
147
  SKIPPING_SEGMENTATION = '(%<file>s): In API: %<api_name>s, Skipping segmentation:%<variation>s for UserId:%<user_id>s as no valid segments found in campaign:%<campaign_key>s'
148
148
 
149
149
  SEGMENTATION_STATUS = '(%<file>s): In API: %<api_name>s, for UserId:%<user_id>s of campaign:%<campaign_key>s with variables:%<custom_variables>s %<status>s %<segmentation_type>s %<variation_name>s'
@@ -73,6 +73,9 @@ class VWO
73
73
  key: {
74
74
  type: ['string']
75
75
  },
76
+ name: {
77
+ type: ['string']
78
+ },
76
79
  status: {
77
80
  type: ['string']
78
81
  },
@@ -92,6 +95,7 @@ class VWO
92
95
  }
93
96
  },
94
97
  isBucketingSeedEnabled: ['boolean'],
98
+ isUserListEnabled: ['boolean'],
95
99
  minItems: 2
96
100
  }
97
101
  },
@@ -91,11 +91,10 @@ class VWO
91
91
  # @return [Boolean]
92
92
  def evaluate_custom_variable?(operand, custom_variables)
93
93
  # Extract custom_variable_key and custom_variables_value from operand
94
-
95
94
  operand_key, operand = get_key_value(operand)
96
95
 
97
96
  # Retrieve corresponding custom_variable value from custom_variables
98
- custom_variables_value = custom_variables[operand_key]
97
+ custom_variables_value = custom_variables[operand_key.to_sym]
99
98
 
100
99
  # Pre process custom_variable value
101
100
  custom_variables_value = process_custom_variables_value(custom_variables_value)
@@ -113,7 +112,7 @@ class VWO
113
112
  def evaluate_user?(operand, custom_variables)
114
113
  users = operand.split(',')
115
114
  users.each do |user|
116
- return true if user.strip == custom_variables['_vwo_user_id']
115
+ return true if user.strip == custom_variables[:_vwo_user_id]
117
116
  end
118
117
  false
119
118
  end
@@ -78,7 +78,9 @@ class VWO
78
78
  i: @sdk_key,
79
79
  r: get_random_number,
80
80
  platform: 'server',
81
- 'api-version' => 1
81
+ 'api-version' => 1,
82
+ 'sdk-v' => VWO::CONSTANTS::SDK_VERSION,
83
+ 'sdk' => VWO::CONSTANTS::SDK_NAME
82
84
  }
83
85
  end
84
86
  end
@@ -299,7 +299,7 @@ class VWO
299
299
  group_campaign_ids.each do |campaign_id|
300
300
  settings_file["campaigns"].each do |campaign|
301
301
  if campaign["id"] == campaign_id && campaign["status"] == STATUS_RUNNING
302
- group_campaigns.append(campaign)
302
+ group_campaigns.push(campaign)
303
303
  end
304
304
  end
305
305
  end
@@ -17,6 +17,7 @@ require_relative '../logger'
17
17
  require_relative '../enums'
18
18
  require_relative '../constants'
19
19
  require_relative './impression'
20
+ require_relative './utility'
20
21
 
21
22
  # Utility module for helper math and random functions
22
23
  class VWO
@@ -25,6 +26,7 @@ class VWO
25
26
  include VWO::CONSTANTS
26
27
  include VWO::Enums
27
28
  include VWO::Utils::Impression
29
+ include VWO::Utils::Utility
28
30
 
29
31
  def get_url_params(settings_file, tag_key, tag_value, user_id, sdk_key)
30
32
  url = HTTPS_PROTOCOL + ENDPOINTS::BASE_URL + ENDPOINTS::PUSH
@@ -39,7 +41,7 @@ class VWO
39
41
  format(
40
42
  LogMessageEnum::DebugMessages::PARAMS_FOR_PUSH_CALL,
41
43
  file: FileNameEnum::CustomDimensionsUtil,
42
- properties: JSON.generate(params)
44
+ properties: remove_sensitive_properties(params)
43
45
  )
44
46
  )
45
47
  params
@@ -19,6 +19,7 @@ require_relative '../enums'
19
19
  require_relative '../constants'
20
20
  require_relative 'function'
21
21
  require_relative 'uuid'
22
+ require_relative 'utility'
22
23
 
23
24
  # Creates the impression from the arguments passed
24
25
  class VWO
@@ -28,6 +29,7 @@ class VWO
28
29
  include VWO::CONSTANTS
29
30
  include VWO::Utils::Function
30
31
  include UUID
32
+ include VWO::Utils::Utility
31
33
 
32
34
  # Creates the impression from the arguments passed
33
35
  #
@@ -76,7 +78,7 @@ class VWO
76
78
  format(
77
79
  LogMessageEnum::DebugMessages::IMPRESSION_FOR_TRACK_USER,
78
80
  file: FileNameEnum::ImpressionUtil,
79
- properties: JSON.generate(impression)
81
+ properties: remove_sensitive_properties(impression)
80
82
  )
81
83
  )
82
84
  else
@@ -88,7 +90,7 @@ class VWO
88
90
  format(
89
91
  LogMessageEnum::DebugMessages::IMPRESSION_FOR_TRACK_GOAL,
90
92
  file: FileNameEnum::ImpressionUtil,
91
- properties: JSON.generate(impression)
93
+ properties: remove_sensitive_properties(impression)
92
94
  )
93
95
  )
94
96
  end
@@ -0,0 +1,46 @@
1
+ # Copyright 2019-2021 Wingify Software Pvt. Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'json'
16
+ require_relative './validations'
17
+
18
+ # Generic utility module
19
+ class VWO
20
+ module Utils
21
+ module Utility
22
+ include Validations
23
+
24
+ # converting hash with keys as strings into hash with keys as strings
25
+ # @param[Hash]
26
+ # @return[Hash]
27
+ def convert_to_symbol_hash(hashObject)
28
+ convertedHash = {}
29
+ hashObject.each do |key, value|
30
+ if valid_hash?(value)
31
+ convertedHash[key.to_sym] = convert_to_symbol_hash(value)
32
+ else
33
+ convertedHash[key.to_sym] = value
34
+ end
35
+ end
36
+ convertedHash
37
+ end
38
+
39
+ def remove_sensitive_properties(properties)
40
+ properties.delete("env")
41
+ properties.delete("env".to_sym)
42
+ JSON.generate(properties)
43
+ end
44
+ end
45
+ end
46
+ end
data/lib/vwo.rb CHANGED
@@ -23,6 +23,7 @@ require_relative 'vwo/utils/campaign'
23
23
  require_relative 'vwo/utils/impression'
24
24
  require_relative 'vwo/utils/feature'
25
25
  require_relative 'vwo/utils/custom_dimensions'
26
+ require_relative 'vwo/utils/utility'
26
27
  require_relative 'vwo/constants'
27
28
  require_relative 'vwo/core/variation_decider'
28
29
  require_relative 'vwo/services/batch_events_dispatcher'
@@ -39,6 +40,7 @@ class VWO
39
40
  include Utils::CustomDimensions
40
41
  include Utils::Campaign
41
42
  include Utils::Impression
43
+ include Utils::Utility
42
44
  include CONSTANTS
43
45
 
44
46
  FILE = FileNameEnum::VWO
@@ -62,6 +64,7 @@ class VWO
62
64
  settings_file = nil,
63
65
  options = {}
64
66
  )
67
+ options = convert_to_symbol_hash(options)
65
68
  @account_id = account_id
66
69
  @sdk_key = sdk_key
67
70
  @user_storage = user_storage
@@ -295,9 +298,10 @@ class VWO
295
298
  return
296
299
  end
297
300
 
301
+ options = convert_to_symbol_hash(options)
298
302
  # Retrieve custom variables
299
- custom_variables = options['custom_variables'] || options[:custom_variables]
300
- variation_targeting_variables = options['variation_targeting_variables'] || options[:variation_targeting_variables]
303
+ custom_variables = options[:custom_variables]
304
+ variation_targeting_variables = options[:variation_targeting_variables]
301
305
 
302
306
  should_track_returning_user = get_should_track_returning_user(options)
303
307
  # Validate input parameters
@@ -404,7 +408,6 @@ class VWO
404
408
  format(
405
409
  LogMessageEnum::InfoMessages::IMPRESSION_SUCCESS,
406
410
  file: FILE,
407
- sdk_key: @sdk_key,
408
411
  account_id: @account_id,
409
412
  campaign_id: campaign['id'],
410
413
  variation_id: variation['id'],
@@ -468,9 +471,10 @@ class VWO
468
471
  )
469
472
  return
470
473
  end
474
+ options = convert_to_symbol_hash(options)
471
475
  # Retrieve custom variables
472
- custom_variables = options['custom_variables'] || options[:custom_variables]
473
- variation_targeting_variables = options['variation_targeting_variables'] || options[:variation_targeting_variables]
476
+ custom_variables = options[:custom_variables]
477
+ variation_targeting_variables = options[:variation_targeting_variables]
474
478
 
475
479
  # Validate input parameters
476
480
  unless valid_string?(campaign_key) && valid_string?(user_id) && (custom_variables.nil? || valid_hash?(custom_variables)) &&
@@ -579,9 +583,10 @@ class VWO
579
583
  return false
580
584
  end
581
585
 
582
- revenue_value = options['revenue_value'] || options[:revenue_value]
583
- custom_variables = options['custom_variables'] || options[:custom_variables]
584
- variation_targeting_variables = options['variation_targeting_variables'] || options[:variation_targeting_variables]
586
+ options = convert_to_symbol_hash(options)
587
+ revenue_value = options[:revenue_value]
588
+ custom_variables = options[:custom_variables]
589
+ variation_targeting_variables = options[:variation_targeting_variables]
585
590
  should_track_returning_user = get_should_track_returning_user(options)
586
591
  goal_type_to_track = get_goal_type_to_track(options)
587
592
 
@@ -719,7 +724,6 @@ class VWO
719
724
  format(
720
725
  LogMessageEnum::InfoMessages::IMPRESSION_SUCCESS,
721
726
  file: FILE,
722
- sdk_key: @sdk_key,
723
727
  account_id: @account_id,
724
728
  campaign_id: campaign['id'],
725
729
  variation_id: variation['id'],
@@ -731,7 +735,6 @@ class VWO
731
735
  format(
732
736
  LogMessageEnum::InfoMessages::MAIN_KEYS_FOR_IMPRESSION,
733
737
  file: FILE,
734
- sdk_key: @sdk_key,
735
738
  campaign_id: impression[:experiment_id],
736
739
  account_id: impression[:account_id],
737
740
  variation_id: impression[:combination]
@@ -799,9 +802,10 @@ class VWO
799
802
  return false
800
803
  end
801
804
 
805
+ options = convert_to_symbol_hash(options)
802
806
  # Retrieve custom variables
803
- custom_variables = options['custom_variables'] || options[:custom_variables]
804
- variation_targeting_variables = options['variation_targeting_variables'] || options[:variation_targeting_variables]
807
+ custom_variables = options[:custom_variables]
808
+ variation_targeting_variables = options[:variation_targeting_variables]
805
809
  should_track_returning_user = get_should_track_returning_user(options)
806
810
  @logger.log(
807
811
  LogLevelEnum::INFO,
@@ -898,7 +902,6 @@ class VWO
898
902
  LogMessageEnum::InfoMessages::MAIN_KEYS_FOR_IMPRESSION,
899
903
  file: FILE,
900
904
  campaign_id: impression[:experiment_id],
901
- sdk_key: @sdk_key,
902
905
  account_id: impression[:account_id],
903
906
  variation_id: impression[:combination]
904
907
  )
@@ -993,9 +996,10 @@ class VWO
993
996
  return
994
997
  end
995
998
 
999
+ options = convert_to_symbol_hash(options)
996
1000
  # Retrieve custom variables
997
- custom_variables = options['custom_variables'] || options[:custom_variables]
998
- variation_targeting_variables = options['variation_targeting_variables'] || options[:variation_targeting_variables]
1001
+ custom_variables = options[:custom_variables]
1002
+ variation_targeting_variables = options[:variation_targeting_variables]
999
1003
 
1000
1004
  unless valid_string?(campaign_key) && valid_string?(variable_key) && valid_string?(user_id) &&
1001
1005
  (custom_variables.nil? || valid_hash?(custom_variables)) && (variation_targeting_variables.nil? || valid_hash?(variation_targeting_variables))
@@ -1198,7 +1202,6 @@ class VWO
1198
1202
  format(
1199
1203
  LogMessageEnum::InfoMessages::MAIN_KEYS_FOR_PUSH_API,
1200
1204
  file: FILE,
1201
- sdk_key: @sdk_key,
1202
1205
  u: impression['u'],
1203
1206
  account_id: impression['account_id'],
1204
1207
  tags: impression['tags']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vwo-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.22.0
4
+ version: 1.24.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - VWO
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-02 00:00:00.000000000 Z
11
+ date: 2021-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: codecov
@@ -87,7 +87,6 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
- - lib/abc.txt
91
90
  - lib/vwo.rb
92
91
  - lib/vwo/constants.rb
93
92
  - lib/vwo/core/bucketer.rb
@@ -112,6 +111,7 @@ files:
112
111
  - lib/vwo/utils/impression.rb
113
112
  - lib/vwo/utils/request.rb
114
113
  - lib/vwo/utils/segment.rb
114
+ - lib/vwo/utils/utility.rb
115
115
  - lib/vwo/utils/uuid.rb
116
116
  - lib/vwo/utils/validations.rb
117
117
  homepage: https://vwo.com/fullstack/server-side-testing/
data/lib/abc.txt DELETED
@@ -1,28 +0,0 @@
1
- {"user_id"=>"Ashley", "variation_name"=>"Control", "campaign_key"=>"DEV_TEST_162"}
2
- GOT_ELIGIBLE_CAMPAIGNS
3
- {"user_id"=>"Ashley", "variation_name"=>"Control", "campaign_key"=>"DEV_TEST_162"}
4
- GOT_ELIGIBLE_CAMPAIGNS
5
- {"user_id"=>"Ashley", "variation_name"=>"Control", "campaign_key"=>"DEV_TEST_162"}
6
- GOT_ELIGIBLE_CAMPAIGNS
7
- {"user_id"=>"Ashley", "variation_name"=>"Control", "campaign_key"=>"DEV_TEST_162"}
8
- GOT_ELIGIBLE_CAMPAIGNS
9
- {"user_id"=>"Ashley", "variation_name"=>"Control", "campaign_key"=>"DEV_TEST_162"}
10
- GOT_ELIGIBLE_CAMPAIGNS
11
- {"user_id"=>"Ashley", "variation_name"=>"Control", "campaign_key"=>"DEV_TEST_162"}
12
- GOT_ELIGIBLE_CAMPAIGNS
13
- {"user_id"=>"Ashley", "variation_name"=>"Control", "campaign_key"=>"DEV_TEST_162"}
14
- GOT_ELIGIBLE_CAMPAIGNS
15
- {"user_id"=>"Ashley", "variation_name"=>"Control", "campaign_key"=>"DEV_TEST_162"}
16
- GOT_ELIGIBLE_CAMPAIGNS
17
- {"user_id"=>"Ashley", "variation_name"=>"Control", "campaign_key"=>"DEV_TEST_162"}
18
- GOT_ELIGIBLE_CAMPAIGNS
19
- {"user_id"=>"Ashley", "variation_name"=>"Control", "campaign_key"=>"DEV_TEST_162"}
20
- GOT_ELIGIBLE_CAMPAIGNS
21
- {"user_id"=>"Ashley", "variation_name"=>"Control", "campaign_key"=>"DEV_TEST_162"}
22
- GOT_ELIGIBLE_CAMPAIGNS
23
- {"user_id"=>"Ashley", "variation_name"=>"Control", "campaign_key"=>"DEV_TEST_162"}
24
- GOT_ELIGIBLE_CAMPAIGNS
25
- {"user_id"=>"Ashley", "variation_name"=>"Control", "campaign_key"=>"DEV_TEST_162"}
26
- GOT_ELIGIBLE_CAMPAIGNS
27
- {"user_id"=>"Ashley", "variation_name"=>"Control", "campaign_key"=>"DEV_TEST_162"}
28
- GOT_ELIGIBLE_CAMPAIGNS