vwo-sdk 1.30.0 → 1.35.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/core/bucketer.rb +42 -32
- data/lib/vwo/core/variation_decider.rb +309 -306
- data/lib/vwo/enums.rb +0 -134
- data/lib/vwo/logger.rb +7 -3
- data/lib/vwo/schemas/settings_file.rb +1 -0
- data/lib/vwo/services/batch_events_dispatcher.rb +43 -34
- data/lib/vwo/services/batch_events_queue.rb +33 -33
- data/lib/vwo/services/event_dispatcher.rb +39 -19
- data/lib/vwo/services/segment_evaluator.rb +11 -10
- data/lib/vwo/services/settings_file_processor.rb +7 -4
- data/lib/vwo/utils/campaign.rb +26 -27
- data/lib/vwo/utils/custom_dimensions.rb +14 -14
- data/lib/vwo/utils/feature.rb +6 -9
- data/lib/vwo/utils/impression.rb +65 -56
- data/lib/vwo/utils/log_message.rb +76 -0
- data/lib/vwo/utils/utility.rb +7 -0
- data/lib/vwo/utils/uuid.rb +12 -10
- data/lib/vwo/utils/validations.rb +56 -48
- data/lib/vwo.rb +437 -438
- metadata +5 -4
data/lib/vwo/utils/campaign.rb
CHANGED
@@ -12,9 +12,9 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
require_relative '../logger'
|
16
15
|
require_relative '../enums'
|
17
16
|
require_relative '../constants'
|
17
|
+
require_relative './log_message'
|
18
18
|
|
19
19
|
# Utility module for processing VWO campaigns
|
20
20
|
class VWO
|
@@ -41,18 +41,17 @@ class VWO
|
|
41
41
|
variation['start_variation_allocation'] = -1
|
42
42
|
variation['end_variation_allocation'] = -1
|
43
43
|
end
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
)
|
44
|
+
Logger.log(
|
45
|
+
LogLevelEnum::DEBUG,
|
46
|
+
'VARIATION_RANGE_ALLOCATION',
|
47
|
+
{
|
48
|
+
'{file}' => FileNameEnum::CampaignUtil,
|
49
|
+
'{campaignKey}' => campaign['key'],
|
50
|
+
'{variationName}' => variation['name'],
|
51
|
+
'{variationWeight}' => variation['weight'],
|
52
|
+
'{start}' => variation['start_variation_allocation'],
|
53
|
+
'{end}' => variation['end_variation_allocation']
|
54
|
+
}
|
56
55
|
)
|
57
56
|
end
|
58
57
|
end
|
@@ -183,13 +182,13 @@ class VWO
|
|
183
182
|
end
|
184
183
|
end
|
185
184
|
if campaigns.length() == 0
|
186
|
-
|
185
|
+
Utils::Logger.log(
|
187
186
|
LogLevelEnum::ERROR,
|
188
|
-
|
189
|
-
|
190
|
-
file
|
191
|
-
|
192
|
-
|
187
|
+
'CAMPAIGN_NOT_FOUND_FOR_GOAL',
|
188
|
+
{
|
189
|
+
'{file}' => FileNameEnum::CampaignUtil,
|
190
|
+
'{goalIdentifier}' => goal_identifier
|
191
|
+
}
|
193
192
|
)
|
194
193
|
end
|
195
194
|
return campaigns
|
@@ -255,14 +254,14 @@ class VWO
|
|
255
254
|
def get_running_campaign(campaign_key, settings_file)
|
256
255
|
campaign = get_campaign(settings_file, campaign_key)
|
257
256
|
if campaign.nil? || (campaign['status'] != 'RUNNING')
|
258
|
-
|
259
|
-
LogLevelEnum::
|
260
|
-
|
261
|
-
|
262
|
-
file
|
263
|
-
|
264
|
-
|
265
|
-
|
257
|
+
Utils::Logger.log(
|
258
|
+
LogLevelEnum::WARNING,
|
259
|
+
'CAMPAIGN_NOT_RUNNING',
|
260
|
+
{
|
261
|
+
'{file}' => FILE,
|
262
|
+
'{campaignKey}' => campaign_key,
|
263
|
+
'{api}' => ApiMethods::TRACK
|
264
|
+
}
|
266
265
|
)
|
267
266
|
nil
|
268
267
|
end
|
@@ -13,11 +13,11 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
require 'json'
|
16
|
-
require_relative '../logger'
|
17
16
|
require_relative '../enums'
|
18
17
|
require_relative '../constants'
|
19
18
|
require_relative './impression'
|
20
19
|
require_relative './utility'
|
20
|
+
require_relative './log_message'
|
21
21
|
|
22
22
|
# Utility module for helper math and random functions
|
23
23
|
class VWO
|
@@ -36,13 +36,13 @@ class VWO
|
|
36
36
|
params = get_common_properties(user_id, settings_file)
|
37
37
|
params.merge!('url' => url, 'tags' => JSON.generate(tag), 'env' => sdk_key)
|
38
38
|
|
39
|
-
|
39
|
+
Logger.log(
|
40
40
|
LogLevelEnum::DEBUG,
|
41
|
-
|
42
|
-
|
43
|
-
file
|
44
|
-
properties
|
45
|
-
|
41
|
+
'IMPRESSION_FOR_PUSH',
|
42
|
+
{
|
43
|
+
'{file}' => FileNameEnum::CustomDimensionsUtil,
|
44
|
+
'{properties}' => JSON.generate(params)
|
45
|
+
}
|
46
46
|
)
|
47
47
|
params
|
48
48
|
end
|
@@ -55,17 +55,17 @@ class VWO
|
|
55
55
|
params = {
|
56
56
|
'eT' => 3,
|
57
57
|
't' => JSON.generate(tag),
|
58
|
-
'u' => generator_for(user_id, account_id),
|
58
|
+
'u' => generator_for(user_id, account_id, true),
|
59
59
|
'sId' => get_current_unix_timestamp
|
60
60
|
}
|
61
61
|
|
62
|
-
|
62
|
+
Logger.log(
|
63
63
|
LogLevelEnum::DEBUG,
|
64
|
-
|
65
|
-
|
66
|
-
file
|
67
|
-
properties
|
68
|
-
|
64
|
+
'IMPRESSION_FOR_PUSH',
|
65
|
+
{
|
66
|
+
'{file}' => FileNameEnum::CustomDimensionsUtil,
|
67
|
+
'{properties}' => JSON.generate(params)
|
68
|
+
}
|
69
69
|
)
|
70
70
|
params
|
71
71
|
end
|
data/lib/vwo/utils/feature.rb
CHANGED
@@ -12,9 +12,9 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
require_relative '../logger'
|
16
15
|
require_relative '../enums'
|
17
16
|
require_relative '../constants'
|
17
|
+
require_relative './log_message'
|
18
18
|
|
19
19
|
# Utility module for helper math and random functions
|
20
20
|
class VWO
|
@@ -41,15 +41,12 @@ class VWO
|
|
41
41
|
|
42
42
|
return value if variable_type == VariableTypes::JSON
|
43
43
|
rescue StandardError => _e
|
44
|
-
|
44
|
+
Logger.log(
|
45
45
|
LogLevelEnum::ERROR,
|
46
|
-
|
47
|
-
|
48
|
-
file
|
49
|
-
|
50
|
-
variable_type: variable_type,
|
51
|
-
of_type: value.class.name
|
52
|
-
)
|
46
|
+
'unable to type cast variable value: ' + _e.message,
|
47
|
+
{
|
48
|
+
'{file}' => FILE
|
49
|
+
}
|
53
50
|
)
|
54
51
|
nil
|
55
52
|
end
|
data/lib/vwo/utils/impression.rb
CHANGED
@@ -14,9 +14,9 @@
|
|
14
14
|
|
15
15
|
require 'json'
|
16
16
|
require 'cgi'
|
17
|
-
require_relative '../logger'
|
18
17
|
require_relative '../enums'
|
19
18
|
require_relative '../constants'
|
19
|
+
require_relative './log_message'
|
20
20
|
require_relative 'function'
|
21
21
|
require_relative 'uuid'
|
22
22
|
require_relative 'utility'
|
@@ -57,7 +57,7 @@ class VWO
|
|
57
57
|
combination: variation_id,
|
58
58
|
random: get_random_number,
|
59
59
|
sId: get_current_unix_timestamp,
|
60
|
-
u: generator_for(user_id, account_id),
|
60
|
+
u: generator_for(user_id, account_id, true),
|
61
61
|
env: sdk_key
|
62
62
|
}
|
63
63
|
# Version and SDK constants
|
@@ -72,25 +72,25 @@ class VWO
|
|
72
72
|
if is_track_user_api
|
73
73
|
impression['ed'] = JSON.generate(p: 'server')
|
74
74
|
impression['url'] = HTTPS_PROTOCOL + get_url(ENDPOINTS::TRACK_USER)
|
75
|
-
|
75
|
+
Logger.log(
|
76
76
|
LogLevelEnum::DEBUG,
|
77
|
-
|
78
|
-
|
79
|
-
file
|
80
|
-
properties
|
81
|
-
|
77
|
+
'IMPRESSION_FOR_TRACK_USER',
|
78
|
+
{
|
79
|
+
'{file}' => FileNameEnum::ImpressionUtil,
|
80
|
+
'{properties}' => remove_sensitive_properties(impression)
|
81
|
+
}
|
82
82
|
)
|
83
83
|
else
|
84
84
|
impression['url'] = HTTPS_PROTOCOL + get_url(ENDPOINTS::TRACK_GOAL)
|
85
85
|
impression['goal_id'] = goal_id
|
86
86
|
impression['r'] = revenue if revenue
|
87
|
-
|
87
|
+
Logger.log(
|
88
88
|
LogLevelEnum::DEBUG,
|
89
|
-
|
90
|
-
|
91
|
-
file
|
92
|
-
properties
|
93
|
-
|
89
|
+
'IMPRESSION_FOR_TRACK_GOAL',
|
90
|
+
{
|
91
|
+
'{file}' => FileNameEnum::ImpressionUtil,
|
92
|
+
'{properties}' => JSON.generate(impression)
|
93
|
+
}
|
94
94
|
)
|
95
95
|
end
|
96
96
|
impression
|
@@ -110,7 +110,7 @@ class VWO
|
|
110
110
|
'sdk-v' => SDK_VERSION,
|
111
111
|
'ap' => PLATFORM,
|
112
112
|
'sId' => get_current_unix_timestamp,
|
113
|
-
'u' => generator_for(user_id, account_id),
|
113
|
+
'u' => generator_for(user_id, account_id, true),
|
114
114
|
'account_id' => account_id
|
115
115
|
}
|
116
116
|
end
|
@@ -136,29 +136,29 @@ class VWO
|
|
136
136
|
eT: is_track_user_api ? 1 : 2,
|
137
137
|
e: campaign_id,
|
138
138
|
c: variation_id,
|
139
|
-
u: generator_for(user_id, account_id),
|
139
|
+
u: generator_for(user_id, account_id, true),
|
140
140
|
sId: get_current_unix_timestamp
|
141
141
|
}
|
142
142
|
logger = VWO::Logger.get_instance
|
143
143
|
if is_track_user_api
|
144
|
-
|
144
|
+
Logger.log(
|
145
145
|
LogLevelEnum::DEBUG,
|
146
|
-
|
147
|
-
|
148
|
-
file
|
149
|
-
properties
|
150
|
-
|
146
|
+
'IMPRESSION_FOR_TRACK_USER',
|
147
|
+
{
|
148
|
+
'{file}' => FileNameEnum::ImpressionUtil,
|
149
|
+
'{properties}' => remove_sensitive_properties(impression)
|
150
|
+
}
|
151
151
|
)
|
152
152
|
else
|
153
153
|
impression['g'] = goal_id
|
154
154
|
impression['r'] = revenue if revenue
|
155
|
-
|
155
|
+
Logger.log(
|
156
156
|
LogLevelEnum::DEBUG,
|
157
|
-
|
158
|
-
|
159
|
-
file
|
160
|
-
properties
|
161
|
-
|
157
|
+
'IMPRESSION_FOR_TRACK_GOAL',
|
158
|
+
{
|
159
|
+
'{file}' => FileNameEnum::ImpressionUtil,
|
160
|
+
'{properties}' => JSON.generate(impression)
|
161
|
+
}
|
162
162
|
)
|
163
163
|
end
|
164
164
|
impression
|
@@ -171,7 +171,7 @@ class VWO
|
|
171
171
|
# @param[String] :event_name
|
172
172
|
# @param[Hash] :usage_stats
|
173
173
|
# @return[Hash] :properties
|
174
|
-
#
|
174
|
+
#
|
175
175
|
def get_events_base_properties(settings_file, event_name, usage_stats = {})
|
176
176
|
properties = {
|
177
177
|
en: event_name,
|
@@ -195,9 +195,9 @@ class VWO
|
|
195
195
|
# @param[String] :event_name
|
196
196
|
# @param[Hash] :usage_stats
|
197
197
|
# @return[Hash] :properties
|
198
|
-
#
|
198
|
+
#
|
199
199
|
def get_event_base_payload(settings_file, user_id, event_name, usage_stats = {})
|
200
|
-
uuid = generator_for(user_id, (settings_file['accountId']))
|
200
|
+
uuid = generator_for(user_id, (settings_file['accountId']), true)
|
201
201
|
sdk_key = settings_file['sdkKey']
|
202
202
|
|
203
203
|
props = {
|
@@ -254,15 +254,15 @@ class VWO
|
|
254
254
|
properties[:d][:event][:props][:isFirst] = 1
|
255
255
|
|
256
256
|
logger = VWO::Logger.get_instance
|
257
|
-
|
257
|
+
Logger.log(
|
258
258
|
LogLevelEnum::DEBUG,
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
259
|
+
'IMPRESSION_FOR_EVENT_ARCH_TRACK_USER',
|
260
|
+
{
|
261
|
+
'{file}' => FileNameEnum::ImpressionUtil,
|
262
|
+
'{accountId}' => settings_file['accountId'],
|
263
|
+
'{userId}' => user_id,
|
264
|
+
'{campaignId}' => campaign_id.to_s
|
265
|
+
}
|
266
266
|
)
|
267
267
|
properties
|
268
268
|
end
|
@@ -285,16 +285,16 @@ class VWO
|
|
285
285
|
metric = {}
|
286
286
|
metric_map.each do |campaign_id, goal_id|
|
287
287
|
metric[('id_' + campaign_id.to_s).to_sym] = ['g_' + goal_id.to_s]
|
288
|
-
|
288
|
+
Logger.log(
|
289
289
|
LogLevelEnum::DEBUG,
|
290
|
-
|
291
|
-
|
292
|
-
file
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
290
|
+
'IMPRESSION_FOR_EVENT_ARCH_TRACK_GOAL',
|
291
|
+
{
|
292
|
+
'{file}' => FileNameEnum::ImpressionUtil,
|
293
|
+
'{accountId}' => settings_file['accountId'],
|
294
|
+
'{goalName}' => event_name,
|
295
|
+
'{userId}' => user_id,
|
296
|
+
'{campaignId}' => campaign_id.to_s
|
297
|
+
}
|
298
298
|
)
|
299
299
|
end
|
300
300
|
|
@@ -331,18 +331,27 @@ class VWO
|
|
331
331
|
end
|
332
332
|
|
333
333
|
logger = VWO::Logger.get_instance
|
334
|
-
|
334
|
+
Logger.log(
|
335
335
|
LogLevelEnum::DEBUG,
|
336
|
-
|
337
|
-
|
338
|
-
file
|
339
|
-
|
340
|
-
|
341
|
-
property
|
342
|
-
|
336
|
+
'IMPRESSION_FOR_EVENT_ARCH_PUSH',
|
337
|
+
{
|
338
|
+
'{file}' => FileNameEnum::ImpressionUtil,
|
339
|
+
'{accountId}' => settings_file['accountId'],
|
340
|
+
'{userId}' => user_id,
|
341
|
+
'{property}' => JSON.generate(custom_dimension_map)
|
342
|
+
}
|
343
343
|
)
|
344
344
|
properties
|
345
345
|
end
|
346
|
+
|
347
|
+
def get_batch_event_query_params(account_id, sdk_key, usage_stats = {})
|
348
|
+
return {
|
349
|
+
a: account_id,
|
350
|
+
sd: SDK_NAME,
|
351
|
+
sv: SDK_VERSION,
|
352
|
+
env: sdk_key
|
353
|
+
}.merge(usage_stats)
|
354
|
+
end
|
346
355
|
end
|
347
356
|
end
|
348
357
|
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# Copyright 2019-2022 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 'vwo_log_messages'
|
16
|
+
|
17
|
+
require_relative '../logger'
|
18
|
+
|
19
|
+
class VWO
|
20
|
+
module Utils
|
21
|
+
class Logger
|
22
|
+
|
23
|
+
DEBUG = ::Logger::DEBUG
|
24
|
+
INFO = ::Logger::INFO
|
25
|
+
ERROR = ::Logger::ERROR
|
26
|
+
WARN = ::Logger::WARN
|
27
|
+
|
28
|
+
@@logs = nil
|
29
|
+
@@api_name = 'api_name'
|
30
|
+
|
31
|
+
def self.set_api_name(api_name)
|
32
|
+
@@api_name = api_name
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.get_log_message(logsType, message_type)
|
36
|
+
if @@logs.nil?
|
37
|
+
@@logs = VwoLogMessages.getMessage
|
38
|
+
end
|
39
|
+
|
40
|
+
if !@@logs[logsType].key?(message_type)
|
41
|
+
return message_type
|
42
|
+
end
|
43
|
+
return @@logs[logsType][message_type]
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.log(level, message_type, params, disable_logs = false)
|
47
|
+
if disable_logs
|
48
|
+
return
|
49
|
+
end
|
50
|
+
if level == DEBUG
|
51
|
+
message = get_log_message('debug_logs', message_type)
|
52
|
+
elsif level == INFO
|
53
|
+
message = get_log_message('info_logs', message_type)
|
54
|
+
elsif level == ERROR
|
55
|
+
message = get_log_message('error_logs', message_type)
|
56
|
+
elsif level == WARN
|
57
|
+
message = get_log_message('warning_logs', message_type)
|
58
|
+
else
|
59
|
+
message = ""
|
60
|
+
end
|
61
|
+
message = message.dup
|
62
|
+
|
63
|
+
if message && !message.empty?
|
64
|
+
params.each {
|
65
|
+
|key, value|
|
66
|
+
if message.include? key
|
67
|
+
message[key.to_s]= value.to_s
|
68
|
+
end
|
69
|
+
}
|
70
|
+
end
|
71
|
+
message = '[' + @@api_name + '] ' + message
|
72
|
+
VWO::Logger.get_instance.log(level, message)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data/lib/vwo/utils/utility.rb
CHANGED
@@ -50,6 +50,13 @@ class VWO
|
|
50
50
|
def get_url(endpoint)
|
51
51
|
return DataLocationManager.get_instance().get_data_location + endpoint
|
52
52
|
end
|
53
|
+
|
54
|
+
def prepare_push_response(custom_dimension_map, resp, result)
|
55
|
+
custom_dimension_map.each do |tag_key, tag_value|
|
56
|
+
result[tag_key] = resp
|
57
|
+
end
|
58
|
+
result
|
59
|
+
end
|
53
60
|
end
|
54
61
|
end
|
55
62
|
end
|
data/lib/vwo/utils/uuid.rb
CHANGED
@@ -13,9 +13,9 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
require 'digest'
|
16
|
-
require_relative '../logger'
|
17
16
|
require_relative '../enums'
|
18
17
|
require_relative '../constants'
|
18
|
+
require_relative './log_message'
|
19
19
|
|
20
20
|
# Utility module for generating uuid
|
21
21
|
class VWO
|
@@ -53,10 +53,11 @@ class VWO
|
|
53
53
|
#
|
54
54
|
# @param[Integer|String] :user_id User identifier
|
55
55
|
# @param[Integer|String] :account_id Account identifier
|
56
|
+
# @param[Boolean] :disable_logs if true, do not log log-message
|
56
57
|
#
|
57
58
|
# @return[Integer] Desired UUID
|
58
59
|
#
|
59
|
-
def generator_for(user_id, account_id)
|
60
|
+
def generator_for(user_id, account_id, disable_logs = false)
|
60
61
|
user_id = user_id.to_s
|
61
62
|
account_id = account_id.to_s
|
62
63
|
user_id_namespace = generate(VWO_NAMESPACE, account_id)
|
@@ -64,15 +65,16 @@ class VWO
|
|
64
65
|
|
65
66
|
desired_uuid = uuid_for_account_user_id.delete('-').upcase
|
66
67
|
|
67
|
-
|
68
|
+
Logger.log(
|
68
69
|
LogLevelEnum::DEBUG,
|
69
|
-
|
70
|
-
|
71
|
-
file
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
70
|
+
'USER_UUID',
|
71
|
+
{
|
72
|
+
'{file}' => FILE,
|
73
|
+
'{userId}' => user_id,
|
74
|
+
'{accountId}' => account_id,
|
75
|
+
'{uuid}' => desired_uuid
|
76
|
+
},
|
77
|
+
disable_logs
|
76
78
|
)
|
77
79
|
desired_uuid
|
78
80
|
end
|
@@ -15,13 +15,14 @@
|
|
15
15
|
require 'json'
|
16
16
|
require 'json-schema'
|
17
17
|
require_relative '../schemas/settings_file'
|
18
|
-
require_relative '../logger'
|
19
18
|
require_relative '../enums'
|
20
19
|
require_relative '../constants'
|
20
|
+
require_relative './log_message'
|
21
21
|
|
22
22
|
class VWO
|
23
23
|
module Utils
|
24
24
|
module Validations
|
25
|
+
include Enums
|
25
26
|
# Validates the settings_file
|
26
27
|
# @param [Hash]: JSON object received from VWO server
|
27
28
|
# must be JSON.
|
@@ -66,83 +67,90 @@ class VWO
|
|
66
67
|
# Validates if the value passed batch_events has correct data type and values or not.
|
67
68
|
#
|
68
69
|
# Args: batch_events [Hash]: value to be tested
|
70
|
+
# api_name [String]: current api name
|
69
71
|
#
|
70
72
|
# @return: [Boolean]: True if all conditions are passed else False
|
71
|
-
def is_valid_batch_event_settings(batch_events)
|
72
|
-
logger = VWO::Logger.get_instance
|
73
|
+
def is_valid_batch_event_settings(batch_events, api_name)
|
73
74
|
events_per_request = batch_events[:events_per_request]
|
74
75
|
request_time_interval = batch_events[:request_time_interval]
|
75
76
|
|
76
77
|
unless events_per_request || request_time_interval
|
77
|
-
|
78
|
-
VWO::LogLevelEnum::ERROR,
|
79
|
-
format(
|
80
|
-
VWO::LogMessageEnum::ErrorMessages::EVENT_BATCHING_INSUFFICIENT,
|
81
|
-
file: VWO::FileNameEnum::ValidateUtil
|
82
|
-
)
|
83
|
-
)
|
78
|
+
invalid_config_log('batch_events', 'object', api_name)
|
84
79
|
return false
|
85
80
|
end
|
86
81
|
|
87
82
|
if (request_time_interval && !valid_number?(request_time_interval))
|
88
|
-
|
89
|
-
VWO::LogLevelEnum::ERROR,
|
90
|
-
format(
|
91
|
-
VWO::LogMessageEnum::ErrorMessages::REQUEST_TIME_INTERVAL_INVALID,
|
92
|
-
file: VWO::FileNameEnum::ValidateUtil
|
93
|
-
)
|
94
|
-
)
|
83
|
+
invalid_config_log('batch_events', 'object', api_name)
|
95
84
|
return false
|
96
85
|
end
|
97
86
|
|
98
87
|
if (events_per_request && !valid_number?(events_per_request))
|
99
|
-
|
100
|
-
VWO::LogLevelEnum::ERROR,
|
101
|
-
format(
|
102
|
-
VWO::LogMessageEnum::ErrorMessages::EVENTS_PER_REQUEST_INVALID,
|
103
|
-
file: VWO::FileNameEnum::ValidateUtil
|
104
|
-
)
|
105
|
-
)
|
88
|
+
invalid_config_log('batch_events', 'object', api_name)
|
106
89
|
return false
|
107
90
|
end
|
108
91
|
|
109
92
|
if events_per_request && (events_per_request < VWO::MIN_EVENTS_PER_REQUEST || events_per_request > VWO::MAX_EVENTS_PER_REQUEST)
|
110
|
-
|
111
|
-
VWO::LogLevelEnum::ERROR,
|
112
|
-
format(
|
113
|
-
VWO::LogMessageEnum::ErrorMessages::EVENTS_PER_REQUEST_OUT_OF_BOUNDS,
|
114
|
-
file: VWO::FileNameEnum::ValidateUtil,
|
115
|
-
min_value: VWO::MIN_EVENTS_PER_REQUEST,
|
116
|
-
max_value: VWO::MAX_EVENTS_PER_REQUEST
|
117
|
-
)
|
118
|
-
)
|
93
|
+
invalid_config_log('batch_events', 'object', api_name)
|
119
94
|
return false
|
120
95
|
end
|
121
96
|
|
122
97
|
if request_time_interval && request_time_interval < VWO::MIN_REQUEST_TIME_INTERVAL
|
123
|
-
|
124
|
-
VWO::LogLevelEnum::ERROR,
|
125
|
-
format(
|
126
|
-
VWO::LogMessageEnum::ErrorMessages::REQUEST_TIME_INTERVAL_OUT_OF_BOUNDS,
|
127
|
-
file: VWO::FileNameEnum::ValidateUtil,
|
128
|
-
min_value: VWO::MIN_REQUEST_TIME_INTERVAL
|
129
|
-
)
|
130
|
-
)
|
98
|
+
invalid_config_log('batch_events', 'object', api_name)
|
131
99
|
return false
|
132
100
|
end
|
133
101
|
|
134
102
|
if batch_events.key?(:flushCallback) && !batch_events[:flushCallback].is_a?(Method)
|
135
|
-
|
136
|
-
VWO::LogLevelEnum::ERROR,
|
137
|
-
format(
|
138
|
-
VWO::LogMessageEnum::ErrorMessages::FLUSH_CALLBACK_INVALID,
|
139
|
-
file: VWO::FileNameEnum::ValidateUtil
|
140
|
-
)
|
141
|
-
)
|
103
|
+
invalid_config_log('batch_events', 'object', api_name)
|
142
104
|
return false
|
143
105
|
end
|
144
106
|
true
|
145
107
|
end
|
108
|
+
|
109
|
+
def validate_sdk_config?(user_storage, is_development_mode, api_name)
|
110
|
+
if is_development_mode
|
111
|
+
if [true, false].include? is_development_mode
|
112
|
+
valid_config_log('isDevelopmentMode', 'boolean')
|
113
|
+
else
|
114
|
+
invalid_config_log('isDevelopmentMode', 'boolean', api_name)
|
115
|
+
return false
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
if user_storage
|
120
|
+
if user_storage.is_a?(UserStorage)
|
121
|
+
valid_config_log('UserStorageService', 'object')
|
122
|
+
else
|
123
|
+
invalid_config_log('UserStorageService', 'object', api_name)
|
124
|
+
return false
|
125
|
+
end
|
126
|
+
end
|
127
|
+
true
|
128
|
+
end
|
129
|
+
|
130
|
+
def valid_config_log(parameter, type)
|
131
|
+
Logger.log(
|
132
|
+
LogLevelEnum::INFO,
|
133
|
+
'CONFIG_PARAMETER_USED',
|
134
|
+
{
|
135
|
+
'{file}' => VWO::FileNameEnum::ValidateUtil,
|
136
|
+
'{parameter}' => parameter,
|
137
|
+
'{type}' => type
|
138
|
+
}
|
139
|
+
)
|
140
|
+
end
|
141
|
+
|
142
|
+
def invalid_config_log(parameter, type, api_name)
|
143
|
+
Logger.log(
|
144
|
+
LogLevelEnum::ERROR,
|
145
|
+
'CONFIG_PARAMETER_INVALID',
|
146
|
+
{
|
147
|
+
'{file}' => VWO::FileNameEnum::ValidateUtil,
|
148
|
+
'{parameter}' => parameter,
|
149
|
+
'{type}' => type,
|
150
|
+
'{api}' => api_name
|
151
|
+
}
|
152
|
+
)
|
153
|
+
end
|
146
154
|
end
|
147
155
|
end
|
148
156
|
end
|