splitclient-rb 6.4.1.pre.rc3-java → 7.0.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.txt +15 -1
  3. data/Detailed-README.md +9 -21
  4. data/NEWS +3 -0
  5. data/lib/splitclient-rb.rb +2 -1
  6. data/lib/splitclient-rb/cache/adapters/cache_adapter.rb +3 -3
  7. data/lib/splitclient-rb/cache/repositories/events/memory_repository.rb +5 -4
  8. data/lib/splitclient-rb/cache/repositories/events/redis_repository.rb +4 -3
  9. data/lib/splitclient-rb/cache/repositories/events_repository.rb +10 -9
  10. data/lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb +7 -6
  11. data/lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb +5 -4
  12. data/lib/splitclient-rb/cache/repositories/impressions_repository.rb +9 -8
  13. data/lib/splitclient-rb/cache/repositories/metrics/memory_repository.rb +3 -2
  14. data/lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb +5 -4
  15. data/lib/splitclient-rb/cache/repositories/metrics_repository.rb +6 -4
  16. data/lib/splitclient-rb/cache/repositories/repository.rb +7 -2
  17. data/lib/splitclient-rb/cache/repositories/segments_repository.rb +6 -5
  18. data/lib/splitclient-rb/cache/repositories/splits_repository.rb +56 -14
  19. data/lib/splitclient-rb/cache/routers/impression_router.rb +5 -4
  20. data/lib/splitclient-rb/cache/senders/events_sender.rb +7 -6
  21. data/lib/splitclient-rb/cache/senders/impressions_sender.rb +10 -9
  22. data/lib/splitclient-rb/cache/senders/metrics_sender.rb +9 -8
  23. data/lib/splitclient-rb/cache/stores/sdk_blocker.rb +19 -10
  24. data/lib/splitclient-rb/cache/stores/segment_store.rb +15 -28
  25. data/lib/splitclient-rb/cache/stores/split_store.rb +13 -15
  26. data/lib/splitclient-rb/clients/localhost_split_client.rb +8 -7
  27. data/lib/splitclient-rb/clients/split_client.rb +65 -35
  28. data/lib/splitclient-rb/engine/api/client.rb +17 -13
  29. data/lib/splitclient-rb/engine/api/events.rb +7 -6
  30. data/lib/splitclient-rb/engine/api/impressions.rb +6 -5
  31. data/lib/splitclient-rb/engine/api/metrics.rb +8 -7
  32. data/lib/splitclient-rb/engine/api/segments.rb +11 -10
  33. data/lib/splitclient-rb/engine/api/splits.rb +6 -5
  34. data/lib/splitclient-rb/engine/matchers/all_keys_matcher.rb +1 -1
  35. data/lib/splitclient-rb/engine/matchers/between_matcher.rb +7 -5
  36. data/lib/splitclient-rb/engine/matchers/combining_matcher.rb +5 -4
  37. data/lib/splitclient-rb/engine/matchers/contains_all_matcher.rb +4 -4
  38. data/lib/splitclient-rb/engine/matchers/contains_any_matcher.rb +3 -3
  39. data/lib/splitclient-rb/engine/matchers/contains_matcher.rb +7 -5
  40. data/lib/splitclient-rb/engine/matchers/dependency_matcher.rb +3 -2
  41. data/lib/splitclient-rb/engine/matchers/ends_with_matcher.rb +5 -4
  42. data/lib/splitclient-rb/engine/matchers/equal_to_boolean_matcher.rb +3 -2
  43. data/lib/splitclient-rb/engine/matchers/equal_to_matcher.rb +6 -4
  44. data/lib/splitclient-rb/engine/matchers/equal_to_set_matcher.rb +3 -3
  45. data/lib/splitclient-rb/engine/matchers/greater_than_or_equal_to_matcher.rb +6 -4
  46. data/lib/splitclient-rb/engine/matchers/less_than_or_equal_to_matcher.rb +6 -4
  47. data/lib/splitclient-rb/engine/matchers/matcher.rb +4 -0
  48. data/lib/splitclient-rb/engine/matchers/matches_string_matcher.rb +3 -2
  49. data/lib/splitclient-rb/engine/matchers/negation_matcher.rb +3 -2
  50. data/lib/splitclient-rb/engine/matchers/part_of_set_matcher.rb +4 -4
  51. data/lib/splitclient-rb/engine/matchers/set_matcher.rb +2 -1
  52. data/lib/splitclient-rb/engine/matchers/starts_with_matcher.rb +4 -3
  53. data/lib/splitclient-rb/engine/matchers/user_defined_segment_matcher.rb +3 -2
  54. data/lib/splitclient-rb/engine/matchers/whitelist_matcher.rb +7 -5
  55. data/lib/splitclient-rb/engine/models/label.rb +2 -0
  56. data/lib/splitclient-rb/engine/parser/condition.rb +31 -20
  57. data/lib/splitclient-rb/engine/parser/evaluator.rb +3 -2
  58. data/lib/splitclient-rb/engine/parser/split_adapter.rb +9 -7
  59. data/lib/splitclient-rb/localhost_split_factory.rb +3 -2
  60. data/lib/splitclient-rb/managers/split_manager.rb +39 -5
  61. data/lib/splitclient-rb/redis_metrics_fixer.rb +5 -4
  62. data/lib/splitclient-rb/split_config.rb +35 -14
  63. data/lib/splitclient-rb/split_factory.rb +44 -32
  64. data/lib/splitclient-rb/split_factory_builder.rb +4 -5
  65. data/lib/splitclient-rb/split_factory_registry.rb +51 -0
  66. data/lib/splitclient-rb/split_logger.rb +5 -14
  67. data/lib/splitclient-rb/validators.rb +19 -16
  68. data/lib/splitclient-rb/version.rb +1 -1
  69. metadata +5 -4
@@ -1,8 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SplitIoClient
4
- module Validators
5
- extend self
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
- SplitIoClient.configuration.logger.error("#{method}: you passed a nil #{key}, #{key} must be a non-empty String or a Symbol")
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
- SplitIoClient.configuration.logger.error("#{method}: you passed an empty #{key}, #{key} must be a non-empty String or a Symbol")
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
- SplitIoClient.configuration.logger.error("#{method}: you passed an invalid #{key} type, #{key} must be a non-empty String or a Symbol")
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
- SplitIoClient.configuration.logger.warn("#{method}: #{key} \"#{value}\" is not of type String, converting")
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
- SplitIoClient.configuration.logger.error("#{method}: #{key} is too long - must be #{SplitIoClient.configuration.max_key_size} characters or less")
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 > SplitIoClient.configuration.max_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 > SplitIoClient.configuration.max_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
- SplitIoClient.configuration.logger.error("#{method}: split_names must be a non-empty Array")
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
- SplitIoClient.configuration.logger.error("#{method}: attributes must be of type Hash")
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 > SplitIoClient.configuration.max_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
- SplitIoClient.configuration.logger.error("track: you passed '#{event_type}', " \
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
- SplitIoClient.configuration.logger.warn('track: traffic_type_name should be all lowercase - ' \
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
- SplitIoClient.configuration.logger.error('track: value must be Numeric')
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
- SplitIoClient.configuration.logger.error('track: properties must be a Hash')
263
+ @config.logger.error('track: properties must be a Hash')
261
264
  return false
262
265
  end
263
266
 
@@ -1,3 +1,3 @@
1
1
  module SplitIoClient
2
- VERSION = '6.4.1.pre.rc3'
2
+ VERSION = '7.0.0'
3
3
  end
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: 6.4.1.pre.rc3
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-07-26 00:00:00.000000000 Z
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: 1.3.1
406
+ version: '0'
406
407
  requirements: []
407
408
  rubyforge_project:
408
409
  rubygems_version: 2.6.14