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.
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