vwo-sdk 1.22.0 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/vwo/constants.rb +1 -1
- data/lib/vwo/core/variation_decider.rb +23 -11
- data/lib/vwo/enums.rb +5 -5
- data/lib/vwo/schemas/settings_file.rb +4 -0
- data/lib/vwo/services/operand_evaluator.rb +2 -3
- data/lib/vwo/services/settings_file_manager.rb +3 -1
- data/lib/vwo/utils/campaign.rb +1 -1
- data/lib/vwo/utils/custom_dimensions.rb +3 -1
- data/lib/vwo/utils/impression.rb +4 -2
- data/lib/vwo/utils/utility.rb +46 -0
- data/lib/vwo.rb +19 -16
- metadata +3 -3
- data/lib/abc.txt +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb7f9b19ca3bcec001ea97863046b3d33f3806e8a3b4b0fb76d3d3be0dbe1e41
|
4
|
+
data.tar.gz: 30357fe06aeb296f73fcc8699baf89e9c291a1dd3d44bb7e57c6be7f4317aa13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
|
463
|
-
|
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
|
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.
|
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.
|
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.
|
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
|
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:
|
132
|
-
MAIN_KEYS_FOR_IMPRESSION = '(%<file>s): Having main keys:
|
133
|
-
MAIN_KEYS_FOR_PUSH_API = '(%<file>s): Having main keys:
|
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
|
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[
|
115
|
+
return true if user.strip == custom_variables[:_vwo_user_id]
|
117
116
|
end
|
118
117
|
false
|
119
118
|
end
|
data/lib/vwo/utils/campaign.rb
CHANGED
@@ -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.
|
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:
|
44
|
+
properties: remove_sensitive_properties(params)
|
43
45
|
)
|
44
46
|
)
|
45
47
|
params
|
data/lib/vwo/utils/impression.rb
CHANGED
@@ -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:
|
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:
|
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[
|
300
|
-
variation_targeting_variables = options[
|
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[
|
473
|
-
variation_targeting_variables = options[
|
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
|
-
|
583
|
-
|
584
|
-
|
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[
|
804
|
-
variation_targeting_variables = options[
|
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[
|
998
|
-
variation_targeting_variables = options[
|
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.
|
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-
|
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
|