vwo-sdk 1.25.0 → 1.28.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 +2 -1
- data/lib/vwo/enums.rb +2 -0
- data/lib/vwo.rb +92 -7
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 83480c79432c0c6199e03e365b71fcf8b2e0ffaf89b976c94234b3bcfc54e931
|
|
4
|
+
data.tar.gz: a695f06bf66c0186c193b05b9d4a6a931c75b9398f260f7d733b57275a3bfedd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 63572509c60e9e96c39775bab1fe0bea00dd0ca27f436c46055563886a66bca0d78b3259fe70c2d58e13c8ed0c8e036245760923fcf2187b964628cea2f7741b
|
|
7
|
+
data.tar.gz: f96d84a9c2ae09e474ede155e1187cce8cd9a0dc38f56646531519aae27c07d5883c5373a60fae9fe92eef9fe0da7f23b1af7e3a71ce1a4283fda9ee6533551a
|
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.28.0'
|
|
31
31
|
SDK_NAME = 'ruby'
|
|
32
32
|
VWO_DELIMITER = '_vwo_'
|
|
33
33
|
MAX_EVENTS_PER_REQUEST = 5000
|
|
@@ -102,6 +102,7 @@ class VWO
|
|
|
102
102
|
PUSH = 'push'
|
|
103
103
|
GET_AND_UPDATE_SETTINGS_FILE = 'get_and_update_settings_file'
|
|
104
104
|
FLUSH_EVENTS = 'flush_events'
|
|
105
|
+
OPT_OUT = 'opt_out'
|
|
105
106
|
end
|
|
106
107
|
|
|
107
108
|
module PushApi
|
data/lib/vwo/enums.rb
CHANGED
|
@@ -164,6 +164,8 @@ class VWO
|
|
|
164
164
|
GOT_ELIGIBLE_CAMPAIGNS = "(%<file>s): Got %<no_of_eligible_campaigns>s eligible winners out of %<no_of_group_campaigns>s from the Group:%<group_name>s and for User ID:%<user_id>s"
|
|
165
165
|
CALLED_CAMPAIGN_NOT_WINNER = "(%<file>s): Campaign:%<campaign_key>s does not qualify from the mutually exclusive group:%<group_name>s for User ID:%<user_id>s"
|
|
166
166
|
OTHER_CAMPAIGN_SATISFIES_WHITELISTING_OR_STORAGE = "(%<file>s): Campaign:%<campaign_key>s of Group:%<group_name>s satisfies %<type>s for User ID:%<user_id>s"
|
|
167
|
+
OPT_OUT_API_CALLED = "(%<file>s): You have opted out for not tracking i.e. all API calls will stop functioning and will simply early return"
|
|
168
|
+
API_NOT_ENABLED = "(%<file>s): %<api>s API is disabled as you opted out for tracking. Reinitialize the SDK to enable the normal functioning of all APIs."
|
|
167
169
|
end
|
|
168
170
|
|
|
169
171
|
# Warning Messages
|
data/lib/vwo.rb
CHANGED
|
@@ -65,6 +65,7 @@ class VWO
|
|
|
65
65
|
options = {}
|
|
66
66
|
)
|
|
67
67
|
options = convert_to_symbol_hash(options)
|
|
68
|
+
@is_opted_out = false
|
|
68
69
|
@account_id = account_id
|
|
69
70
|
@sdk_key = sdk_key
|
|
70
71
|
@user_storage = user_storage
|
|
@@ -208,6 +209,10 @@ class VWO
|
|
|
208
209
|
# VWO get_settings method to get settings for a particular account_id
|
|
209
210
|
def get_and_update_settings_file
|
|
210
211
|
|
|
212
|
+
if is_opted_out(ApiMethods::GET_AND_UPDATE_SETTINGS_FILE)
|
|
213
|
+
return false
|
|
214
|
+
end
|
|
215
|
+
|
|
211
216
|
unless @is_instance_valid
|
|
212
217
|
@logger.log(
|
|
213
218
|
LogLevelEnum::ERROR,
|
|
@@ -217,7 +222,7 @@ class VWO
|
|
|
217
222
|
api_name: ApiMethods.GET_AND_UPDATE_SETTINGS_FILE
|
|
218
223
|
)
|
|
219
224
|
)
|
|
220
|
-
return
|
|
225
|
+
return false
|
|
221
226
|
end
|
|
222
227
|
|
|
223
228
|
latest_settings = @settings_file_manager.get_settings_file(true)
|
|
@@ -267,6 +272,10 @@ class VWO
|
|
|
267
272
|
# otherwise null in case of user not becoming part
|
|
268
273
|
|
|
269
274
|
def activate(campaign_key, user_id, options = {})
|
|
275
|
+
if is_opted_out(ApiMethods::ACTIVATE)
|
|
276
|
+
return nil
|
|
277
|
+
end
|
|
278
|
+
|
|
270
279
|
unless @is_instance_valid
|
|
271
280
|
@logger.log(
|
|
272
281
|
LogLevelEnum::ERROR,
|
|
@@ -444,6 +453,10 @@ class VWO
|
|
|
444
453
|
# Otherwise null in case of user not becoming part
|
|
445
454
|
#
|
|
446
455
|
def get_variation_name(campaign_key, user_id, options = {})
|
|
456
|
+
if is_opted_out(ApiMethods::GET_VARIATION_NAME)
|
|
457
|
+
return nil
|
|
458
|
+
end
|
|
459
|
+
|
|
447
460
|
unless @is_instance_valid
|
|
448
461
|
@logger.log(
|
|
449
462
|
LogLevelEnum::ERROR,
|
|
@@ -555,6 +568,10 @@ class VWO
|
|
|
555
568
|
#
|
|
556
569
|
|
|
557
570
|
def track(campaign_key, user_id, goal_identifier, options = {})
|
|
571
|
+
if is_opted_out(ApiMethods::TRACK)
|
|
572
|
+
return false
|
|
573
|
+
end
|
|
574
|
+
|
|
558
575
|
unless @is_instance_valid
|
|
559
576
|
@logger.log(
|
|
560
577
|
LogLevelEnum::ERROR,
|
|
@@ -786,6 +803,10 @@ class VWO
|
|
|
786
803
|
# @return[Boolean] true if user becomes part of feature test/rollout, otherwise false.
|
|
787
804
|
|
|
788
805
|
def feature_enabled?(campaign_key, user_id, options = {})
|
|
806
|
+
if is_opted_out(ApiMethods::IS_FEATURE_ENABLED)
|
|
807
|
+
return false
|
|
808
|
+
end
|
|
809
|
+
|
|
789
810
|
unless @is_instance_valid
|
|
790
811
|
@logger.log(
|
|
791
812
|
LogLevelEnum::ERROR,
|
|
@@ -983,13 +1004,17 @@ class VWO
|
|
|
983
1004
|
#
|
|
984
1005
|
|
|
985
1006
|
def get_feature_variable_value(campaign_key, variable_key, user_id, options = {})
|
|
1007
|
+
if is_opted_out(ApiMethods::GET_FEATURE_VARIABLE_VALUE)
|
|
1008
|
+
return nil
|
|
1009
|
+
end
|
|
1010
|
+
|
|
986
1011
|
unless @is_instance_valid
|
|
987
1012
|
@logger.log(
|
|
988
1013
|
LogLevelEnum::ERROR,
|
|
989
1014
|
format(
|
|
990
1015
|
LogMessageEnum::ErrorMessages::API_CONFIG_CORRUPTED,
|
|
991
1016
|
file: FILE,
|
|
992
|
-
api_name: ApiMethods
|
|
1017
|
+
api_name: ApiMethods::GET_FEATURE_VARIABLE_VALUE
|
|
993
1018
|
)
|
|
994
1019
|
)
|
|
995
1020
|
return
|
|
@@ -1137,16 +1162,20 @@ class VWO
|
|
|
1137
1162
|
# @return true if call is made successfully, else false
|
|
1138
1163
|
|
|
1139
1164
|
def push(tag_key, tag_value, user_id = nil)
|
|
1165
|
+
if is_opted_out(ApiMethods::PUSH)
|
|
1166
|
+
return false
|
|
1167
|
+
end
|
|
1168
|
+
|
|
1140
1169
|
unless @is_instance_valid
|
|
1141
1170
|
@logger.log(
|
|
1142
1171
|
LogLevelEnum::ERROR,
|
|
1143
1172
|
format(
|
|
1144
1173
|
LogMessageEnum::ErrorMessages::API_CONFIG_CORRUPTED,
|
|
1145
1174
|
file: FILE,
|
|
1146
|
-
api_name: ApiMethods
|
|
1175
|
+
api_name: ApiMethods::PUSH
|
|
1147
1176
|
)
|
|
1148
1177
|
)
|
|
1149
|
-
return
|
|
1178
|
+
return false
|
|
1150
1179
|
end
|
|
1151
1180
|
|
|
1152
1181
|
# Argument reshuffling.
|
|
@@ -1245,6 +1274,10 @@ class VWO
|
|
|
1245
1274
|
end
|
|
1246
1275
|
|
|
1247
1276
|
def flush_events
|
|
1277
|
+
if is_opted_out(ApiMethods::FLUSH_EVENTS)
|
|
1278
|
+
return false
|
|
1279
|
+
end
|
|
1280
|
+
|
|
1248
1281
|
unless @is_instance_valid
|
|
1249
1282
|
@logger.log(
|
|
1250
1283
|
LogLevelEnum::ERROR,
|
|
@@ -1254,10 +1287,13 @@ class VWO
|
|
|
1254
1287
|
api_name: ApiMethods::FLUSH_EVENTS
|
|
1255
1288
|
)
|
|
1256
1289
|
)
|
|
1257
|
-
return
|
|
1290
|
+
return false
|
|
1291
|
+
end
|
|
1292
|
+
result = false
|
|
1293
|
+
if defined?(@batch_events) && !@batch_events_queue.nil?
|
|
1294
|
+
result = @batch_events_queue.flush(manual: true)
|
|
1295
|
+
@batch_events_queue.kill_thread
|
|
1258
1296
|
end
|
|
1259
|
-
result = @batch_events_queue.flush(manual: true)
|
|
1260
|
-
@batch_events_queue.kill_thread
|
|
1261
1297
|
result
|
|
1262
1298
|
rescue StandardError => e
|
|
1263
1299
|
@logger.log(
|
|
@@ -1294,6 +1330,55 @@ class VWO
|
|
|
1294
1330
|
goal_type_to_track
|
|
1295
1331
|
end
|
|
1296
1332
|
|
|
1333
|
+
# Manually opting out of VWO SDK, No tracking will happen
|
|
1334
|
+
#
|
|
1335
|
+
# return[bool]
|
|
1336
|
+
#
|
|
1337
|
+
def set_opt_out
|
|
1338
|
+
@logger.log(
|
|
1339
|
+
LogLevelEnum::INFO,
|
|
1340
|
+
format(
|
|
1341
|
+
LogMessageEnum::InfoMessages::OPT_OUT_API_CALLED,
|
|
1342
|
+
file: FILE
|
|
1343
|
+
)
|
|
1344
|
+
)
|
|
1345
|
+
if defined?(@batch_events) && !@batch_events_queue.nil?
|
|
1346
|
+
@batch_events_queue.flush(manual: true)
|
|
1347
|
+
@batch_events_queue.kill_thread
|
|
1348
|
+
end
|
|
1349
|
+
|
|
1350
|
+
@is_opted_out = true
|
|
1351
|
+
@settings_file = nil
|
|
1352
|
+
@user_storage = nil
|
|
1353
|
+
@event_dispatcher = nil
|
|
1354
|
+
@variation_decider = nil
|
|
1355
|
+
@config = nil
|
|
1356
|
+
@usage_stats = nil
|
|
1357
|
+
@batch_event_dispatcher = nil
|
|
1358
|
+
@batch_events_queue = nil
|
|
1359
|
+
@batch_events = nil
|
|
1360
|
+
|
|
1361
|
+
return @is_opted_out
|
|
1362
|
+
end
|
|
1363
|
+
|
|
1364
|
+
|
|
1365
|
+
# Check if VWO SDK is manually opted out
|
|
1366
|
+
# @param[String] :api_name api_name is used in logging
|
|
1367
|
+
# @return[bool]
|
|
1368
|
+
def is_opted_out(api_name)
|
|
1369
|
+
if @is_opted_out
|
|
1370
|
+
@logger.log(
|
|
1371
|
+
LogLevelEnum::INFO,
|
|
1372
|
+
format(
|
|
1373
|
+
LogMessageEnum::InfoMessages::API_NOT_ENABLED,
|
|
1374
|
+
file: FILE,
|
|
1375
|
+
api: api_name
|
|
1376
|
+
)
|
|
1377
|
+
)
|
|
1378
|
+
end
|
|
1379
|
+
return @is_opted_out
|
|
1380
|
+
end
|
|
1381
|
+
|
|
1297
1382
|
def is_event_arch_enabled
|
|
1298
1383
|
return @settings_file.key?('isEventArchEnabled') && @settings_file['isEventArchEnabled']
|
|
1299
1384
|
end
|