splitclient-rb 6.4.1.pre.rc3-java → 7.0.0-java
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/CHANGES.txt +15 -1
- data/Detailed-README.md +9 -21
- data/NEWS +3 -0
- data/lib/splitclient-rb.rb +2 -1
- data/lib/splitclient-rb/cache/adapters/cache_adapter.rb +3 -3
- data/lib/splitclient-rb/cache/repositories/events/memory_repository.rb +5 -4
- data/lib/splitclient-rb/cache/repositories/events/redis_repository.rb +4 -3
- data/lib/splitclient-rb/cache/repositories/events_repository.rb +10 -9
- data/lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb +7 -6
- data/lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb +5 -4
- data/lib/splitclient-rb/cache/repositories/impressions_repository.rb +9 -8
- data/lib/splitclient-rb/cache/repositories/metrics/memory_repository.rb +3 -2
- data/lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb +5 -4
- data/lib/splitclient-rb/cache/repositories/metrics_repository.rb +6 -4
- data/lib/splitclient-rb/cache/repositories/repository.rb +7 -2
- data/lib/splitclient-rb/cache/repositories/segments_repository.rb +6 -5
- data/lib/splitclient-rb/cache/repositories/splits_repository.rb +56 -14
- data/lib/splitclient-rb/cache/routers/impression_router.rb +5 -4
- data/lib/splitclient-rb/cache/senders/events_sender.rb +7 -6
- data/lib/splitclient-rb/cache/senders/impressions_sender.rb +10 -9
- data/lib/splitclient-rb/cache/senders/metrics_sender.rb +9 -8
- data/lib/splitclient-rb/cache/stores/sdk_blocker.rb +19 -10
- data/lib/splitclient-rb/cache/stores/segment_store.rb +15 -28
- data/lib/splitclient-rb/cache/stores/split_store.rb +13 -15
- data/lib/splitclient-rb/clients/localhost_split_client.rb +8 -7
- data/lib/splitclient-rb/clients/split_client.rb +65 -35
- data/lib/splitclient-rb/engine/api/client.rb +17 -13
- data/lib/splitclient-rb/engine/api/events.rb +7 -6
- data/lib/splitclient-rb/engine/api/impressions.rb +6 -5
- data/lib/splitclient-rb/engine/api/metrics.rb +8 -7
- data/lib/splitclient-rb/engine/api/segments.rb +11 -10
- data/lib/splitclient-rb/engine/api/splits.rb +6 -5
- data/lib/splitclient-rb/engine/matchers/all_keys_matcher.rb +1 -1
- data/lib/splitclient-rb/engine/matchers/between_matcher.rb +7 -5
- data/lib/splitclient-rb/engine/matchers/combining_matcher.rb +5 -4
- data/lib/splitclient-rb/engine/matchers/contains_all_matcher.rb +4 -4
- data/lib/splitclient-rb/engine/matchers/contains_any_matcher.rb +3 -3
- data/lib/splitclient-rb/engine/matchers/contains_matcher.rb +7 -5
- data/lib/splitclient-rb/engine/matchers/dependency_matcher.rb +3 -2
- data/lib/splitclient-rb/engine/matchers/ends_with_matcher.rb +5 -4
- data/lib/splitclient-rb/engine/matchers/equal_to_boolean_matcher.rb +3 -2
- data/lib/splitclient-rb/engine/matchers/equal_to_matcher.rb +6 -4
- data/lib/splitclient-rb/engine/matchers/equal_to_set_matcher.rb +3 -3
- data/lib/splitclient-rb/engine/matchers/greater_than_or_equal_to_matcher.rb +6 -4
- data/lib/splitclient-rb/engine/matchers/less_than_or_equal_to_matcher.rb +6 -4
- data/lib/splitclient-rb/engine/matchers/matcher.rb +4 -0
- data/lib/splitclient-rb/engine/matchers/matches_string_matcher.rb +3 -2
- data/lib/splitclient-rb/engine/matchers/negation_matcher.rb +3 -2
- data/lib/splitclient-rb/engine/matchers/part_of_set_matcher.rb +4 -4
- data/lib/splitclient-rb/engine/matchers/set_matcher.rb +2 -1
- data/lib/splitclient-rb/engine/matchers/starts_with_matcher.rb +4 -3
- data/lib/splitclient-rb/engine/matchers/user_defined_segment_matcher.rb +3 -2
- data/lib/splitclient-rb/engine/matchers/whitelist_matcher.rb +7 -5
- data/lib/splitclient-rb/engine/models/label.rb +2 -0
- data/lib/splitclient-rb/engine/parser/condition.rb +31 -20
- data/lib/splitclient-rb/engine/parser/evaluator.rb +3 -2
- data/lib/splitclient-rb/engine/parser/split_adapter.rb +9 -7
- data/lib/splitclient-rb/localhost_split_factory.rb +3 -2
- data/lib/splitclient-rb/managers/split_manager.rb +39 -5
- data/lib/splitclient-rb/redis_metrics_fixer.rb +5 -4
- data/lib/splitclient-rb/split_config.rb +35 -14
- data/lib/splitclient-rb/split_factory.rb +44 -32
- data/lib/splitclient-rb/split_factory_builder.rb +4 -5
- data/lib/splitclient-rb/split_factory_registry.rb +51 -0
- data/lib/splitclient-rb/split_logger.rb +5 -14
- data/lib/splitclient-rb/validators.rb +19 -16
- data/lib/splitclient-rb/version.rb +1 -1
- metadata +5 -4
@@ -1,8 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module SplitIoClient
|
4
|
-
|
5
|
-
|
4
|
+
class Validators
|
5
|
+
|
6
|
+
def initialize(config)
|
7
|
+
@config = config
|
8
|
+
end
|
6
9
|
|
7
10
|
def valid_get_treatment_parameters(method, key, split_name, matching_key, bucketing_key, attributes)
|
8
11
|
valid_key?(method, key) &&
|
@@ -50,23 +53,23 @@ module SplitIoClient
|
|
50
53
|
end
|
51
54
|
|
52
55
|
def log_nil(key, method)
|
53
|
-
|
56
|
+
@config.logger.error("#{method}: you passed a nil #{key}, #{key} must be a non-empty String or a Symbol")
|
54
57
|
end
|
55
58
|
|
56
59
|
def log_empty_string(key, method)
|
57
|
-
|
60
|
+
@config.logger.error("#{method}: you passed an empty #{key}, #{key} must be a non-empty String or a Symbol")
|
58
61
|
end
|
59
62
|
|
60
63
|
def log_invalid_type(key, method)
|
61
|
-
|
64
|
+
@config.logger.error("#{method}: you passed an invalid #{key} type, #{key} must be a non-empty String or a Symbol")
|
62
65
|
end
|
63
66
|
|
64
67
|
def log_convert_numeric(key, method, value)
|
65
|
-
|
68
|
+
@config.logger.warn("#{method}: #{key} \"#{value}\" is not of type String, converting")
|
66
69
|
end
|
67
70
|
|
68
71
|
def log_key_too_long(key, method)
|
69
|
-
|
72
|
+
@config.logger.error("#{method}: #{key} is too long - must be #{@config.max_key_size} characters or less")
|
70
73
|
end
|
71
74
|
|
72
75
|
def valid_split_name?(method, split_name)
|
@@ -115,7 +118,7 @@ module SplitIoClient
|
|
115
118
|
|
116
119
|
log_convert_numeric(:matching_key, method, matching_key) if matching_key.is_a? Numeric
|
117
120
|
|
118
|
-
if matching_key.size >
|
121
|
+
if matching_key.size > @config.max_key_size
|
119
122
|
log_key_too_long(:matching_key, method)
|
120
123
|
return false
|
121
124
|
end
|
@@ -142,7 +145,7 @@ module SplitIoClient
|
|
142
145
|
|
143
146
|
log_convert_numeric(:bucketing_key, method, bucketing_key) if bucketing_key.is_a? Numeric
|
144
147
|
|
145
|
-
if bucketing_key.size >
|
148
|
+
if bucketing_key.size > @config.max_key_size
|
146
149
|
log_key_too_long(:bucketing_key, method)
|
147
150
|
return false
|
148
151
|
end
|
@@ -153,7 +156,7 @@ module SplitIoClient
|
|
153
156
|
|
154
157
|
def valid_split_names?(method, split_names)
|
155
158
|
unless !split_names.nil? && split_names.is_a?(Array)
|
156
|
-
|
159
|
+
@config.logger.error("#{method}: split_names must be a non-empty Array")
|
157
160
|
return false
|
158
161
|
end
|
159
162
|
|
@@ -162,7 +165,7 @@ module SplitIoClient
|
|
162
165
|
|
163
166
|
def valid_attributes?(method, attributes)
|
164
167
|
unless attributes.nil? || attributes.is_a?(Hash)
|
165
|
-
|
168
|
+
@config.logger.error("#{method}: attributes must be of type Hash")
|
166
169
|
return false
|
167
170
|
end
|
168
171
|
|
@@ -187,7 +190,7 @@ module SplitIoClient
|
|
187
190
|
|
188
191
|
log_convert_numeric(:key, :track, key) if key.is_a? Numeric
|
189
192
|
|
190
|
-
if key.size >
|
193
|
+
if key.size > @config.max_key_size
|
191
194
|
log_key_too_long(:key, :track)
|
192
195
|
return false
|
193
196
|
end
|
@@ -212,7 +215,7 @@ module SplitIoClient
|
|
212
215
|
end
|
213
216
|
|
214
217
|
if (event_type.to_s =~ /^[a-zA-Z0-9][-_.:a-zA-Z0-9]{0,79}$/).nil?
|
215
|
-
|
218
|
+
@config.logger.error("track: you passed '#{event_type}', " \
|
216
219
|
'event_type must adhere to the regular expression ^[a-zA-Z0-9][-_.:a-zA-Z0-9]{0,79}$. ' \
|
217
220
|
'This means an event name must be alphanumeric, cannot be more than 80 characters long, ' \
|
218
221
|
'and can only include a dash, underscore, period, or colon as separators of alphanumeric characters')
|
@@ -239,7 +242,7 @@ module SplitIoClient
|
|
239
242
|
end
|
240
243
|
|
241
244
|
unless traffic_type_name == traffic_type_name.downcase
|
242
|
-
|
245
|
+
@config.logger.warn('track: traffic_type_name should be all lowercase - ' \
|
243
246
|
'converting string to lowercase')
|
244
247
|
end
|
245
248
|
|
@@ -248,7 +251,7 @@ module SplitIoClient
|
|
248
251
|
|
249
252
|
def valid_value?(value)
|
250
253
|
unless (value.is_a?(Numeric) && !value.to_f.nan?) || value.nil?
|
251
|
-
|
254
|
+
@config.logger.error('track: value must be Numeric')
|
252
255
|
return false
|
253
256
|
end
|
254
257
|
|
@@ -257,7 +260,7 @@ module SplitIoClient
|
|
257
260
|
|
258
261
|
def valid_properties?(properties)
|
259
262
|
unless properties.is_a?(Hash) || properties.nil?
|
260
|
-
|
263
|
+
@config.logger.error('track: properties must be a Hash')
|
261
264
|
return false
|
262
265
|
end
|
263
266
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: splitclient-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 7.0.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Split Software
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -378,6 +378,7 @@ files:
|
|
378
378
|
- lib/splitclient-rb/split_config.rb
|
379
379
|
- lib/splitclient-rb/split_factory.rb
|
380
380
|
- lib/splitclient-rb/split_factory_builder.rb
|
381
|
+
- lib/splitclient-rb/split_factory_registry.rb
|
381
382
|
- lib/splitclient-rb/split_logger.rb
|
382
383
|
- lib/splitclient-rb/utilitites.rb
|
383
384
|
- lib/splitclient-rb/validators.rb
|
@@ -400,9 +401,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
400
401
|
version: '0'
|
401
402
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
402
403
|
requirements:
|
403
|
-
- - "
|
404
|
+
- - ">="
|
404
405
|
- !ruby/object:Gem::Version
|
405
|
-
version:
|
406
|
+
version: '0'
|
406
407
|
requirements: []
|
407
408
|
rubyforge_project:
|
408
409
|
rubygems_version: 2.6.14
|