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
@@ -5,6 +5,10 @@ module SplitIoClient
5
5
  # class to implement the all keys matcher
6
6
  #
7
7
  class Matcher
8
+ def initialize(logger)
9
+ @logger = logger
10
+ end
11
+
8
12
  #
9
13
  # evaluates if the given object equals the matcher
10
14
  #
@@ -6,9 +6,10 @@ module SplitIoClient
6
6
 
7
7
  attr_reader :attribute
8
8
 
9
- def initialize(attribute, regexp_string)
9
+ def initialize(attribute, regexp_string, logger)
10
10
  @attribute = attribute
11
11
  @regexp_string = @regexp_string.is_a?(Regexp) ? regexp_string : Regexp.new(regexp_string)
12
+ @logger = logger
12
13
  end
13
14
 
14
15
  def match?(args)
@@ -17,7 +18,7 @@ module SplitIoClient
17
18
  end
18
19
 
19
20
  matches = !(value =~ @regexp_string).nil?
20
- SplitLogger.log_if_debug("[MatchesStringMatcher] #{value} matches #{@regexp_string} -> #{matches}")
21
+ @logger.log_if_debug("[MatchesStringMatcher] #{value} matches #{@regexp_string} -> #{matches}")
21
22
  matches
22
23
  end
23
24
 
@@ -7,7 +7,8 @@ module SplitIoClient
7
7
  class NegationMatcher < Matcher
8
8
  MATCHER_TYPE = 'NEGATION_MATCHER'
9
9
 
10
- def initialize(matcher = nil)
10
+ def initialize(logger, matcher = nil)
11
+ super(logger)
11
12
  @matcher = matcher
12
13
  end
13
14
 
@@ -19,7 +20,7 @@ module SplitIoClient
19
20
  # @return [boolean] evaluation of the negation matcher
20
21
  def match?(args)
21
22
  matches = !@matcher.match?(args)
22
- SplitLogger.log_if_debug("[NegationMatcherMatcher] Matcher #{@matcher} Arguments #{args} -> #{matches}")
23
+ @logger.log_if_debug("[NegationMatcherMatcher] Matcher #{@matcher} Arguments #{args} -> #{matches}")
23
24
  matches
24
25
  end
25
26
 
@@ -6,20 +6,20 @@ module SplitIoClient
6
6
 
7
7
  attr_reader :attribute
8
8
 
9
- def initialize(attribute, remote_array)
10
- super(attribute, remote_array)
9
+ def initialize(attribute, remote_array, logger)
10
+ super(attribute, remote_array, logger)
11
11
  end
12
12
 
13
13
  def match?(args)
14
14
  @local_set = local_set(args[:attributes], @attribute)
15
15
 
16
16
  if @local_set.empty?
17
- SplitLogger.log_if_debug('[PartOfSetMatcher] Local Set is empty.')
17
+ @logger.log_if_debug('[PartOfSetMatcher] Local Set is empty.')
18
18
  return false
19
19
  end
20
20
 
21
21
  matches = @local_set.subset? @remote_set
22
- SplitLogger.log_if_debug("[PartOfSetMatcher] Local Set #{@local_set} is a subset of #{@remote_set} -> #{matches}")
22
+ @logger.log_if_debug("[PartOfSetMatcher] Local Set #{@local_set} is a subset of #{@remote_set} -> #{matches}")
23
23
  matches
24
24
  end
25
25
  end
@@ -10,9 +10,10 @@ module SplitIoClient
10
10
 
11
11
  protected
12
12
 
13
- def initialize(attribute, remote_array)
13
+ def initialize(attribute, remote_array, logger)
14
14
  @attribute = attribute
15
15
  @remote_set = remote_array.to_set
16
+ @logger = logger
16
17
  end
17
18
 
18
19
  def local_set(data, attribute)
@@ -6,21 +6,22 @@ module SplitIoClient
6
6
 
7
7
  attr_reader :attribute
8
8
 
9
- def initialize(attribute, prefix_list)
9
+ def initialize(attribute, prefix_list, logger)
10
10
  @attribute = attribute
11
11
  @prefix_list = prefix_list
12
+ @logger = logger
12
13
  end
13
14
 
14
15
  def match?(args)
15
16
  if @prefix_list.empty?
16
- SplitLogger.log_if_debug('[StartsWithMatcher] Prefix List is empty.')
17
+ @logger.log_if_debug('[StartsWithMatcher] Prefix List is empty.')
17
18
  return false
18
19
  end
19
20
 
20
21
  value = get_value(args)
21
22
 
22
23
  matches = @prefix_list.any? { |prefix| value.to_s.start_with? prefix }
23
- SplitLogger.log_if_debug("[StartsWithMatcher] #{value} matches any of #{@prefix_list} -> #{matches}")
24
+ @logger.log_if_debug("[StartsWithMatcher] #{value} matches any of #{@prefix_list} -> #{matches}")
24
25
  matches
25
26
  end
26
27
 
@@ -7,7 +7,8 @@ module SplitIoClient
7
7
  class UserDefinedSegmentMatcher < Matcher
8
8
  MATCHER_TYPE = 'IN_SEGMENT'
9
9
 
10
- def initialize(segments_repository, segment_name)
10
+ def initialize(segments_repository, segment_name, logger)
11
+ super(logger)
11
12
  @segments_repository = segments_repository
12
13
  @segment_name = segment_name
13
14
  end
@@ -20,7 +21,7 @@ module SplitIoClient
20
21
  # @return [boolean] evaluation of the key against the segment
21
22
  def match?(args)
22
23
  matches = @segments_repository.in_segment?(@segment_name, args[:value] || args[:matching_key])
23
- SplitLogger.log_if_debug("[InSegmentMatcher] #{@segment_name} is in segment -> #{matches}")
24
+ @logger.log_if_debug("[InSegmentMatcher] #{@segment_name} is in segment -> #{matches}")
24
25
  matches
25
26
  end
26
27
  end
@@ -9,7 +9,9 @@ module SplitIoClient
9
9
 
10
10
  attr_reader :attribute
11
11
 
12
- def initialize(whitelist_data)
12
+ def initialize(whitelist_data, logger, validator)
13
+ super(logger)
14
+ @validator = validator
13
15
  @whitelist = case whitelist_data
14
16
  when Array
15
17
  whitelist_data
@@ -26,9 +28,9 @@ module SplitIoClient
26
28
  def match?(args)
27
29
  return matches_user_whitelist(args) unless @matcher_type == 'ATTR_WHITELIST'
28
30
 
29
- SplitLogger.log_if_debug('[WhitelistMatcher] evaluating value and attributes.')
31
+ @logger.log_if_debug('[WhitelistMatcher] evaluating value and attributes.')
30
32
 
31
- return false unless SplitIoClient::Validators.valid_matcher_arguments(args)
33
+ return false unless @validator.valid_matcher_arguments(args)
32
34
 
33
35
  matches_attr_whitelist(args)
34
36
  end
@@ -49,14 +51,14 @@ module SplitIoClient
49
51
 
50
52
  def matches_user_whitelist(args)
51
53
  matches = @whitelist.include?(args[:value] || args[:matching_key])
52
- SplitLogger.log_if_debug("[WhitelistMatcher] #{@whitelist} include \
54
+ @logger.log_if_debug("[WhitelistMatcher] #{@whitelist} include \
53
55
  #{args[:value] || args[:matching_key]} -> #{matches}")
54
56
  matches
55
57
  end
56
58
 
57
59
  def matches_attr_whitelist(args)
58
60
  matches = @whitelist.include?(args[:value] || args[:attributes][@attribute.to_sym])
59
- SplitLogger.log_if_debug("[WhitelistMatcher] #{@whitelist} include \
61
+ @logger.log_if_debug("[WhitelistMatcher] #{@whitelist} include \
60
62
  #{args[:value] || args[:attributes][@attribute.to_sym]} -> #{matches}")
61
63
  matches
62
64
  end
@@ -4,4 +4,6 @@ class SplitIoClient::Engine::Models::Label
4
4
  EXCEPTION = 'exception'.freeze
5
5
  KILLED = 'killed'.freeze
6
6
  NOT_IN_SPLIT = 'not in split'.freeze
7
+ NOT_READY = 'not ready'.freeze
8
+ NOT_FOUND = 'definition not found'.freeze
7
9
  end
@@ -11,13 +11,14 @@ module SplitIoClient
11
11
  # @returns [object] condition values
12
12
  attr_accessor :data
13
13
 
14
- def initialize(condition)
14
+ def initialize(condition, config)
15
15
  @data = condition
16
16
  @partitions = set_partitions
17
+ @config = config
17
18
  end
18
19
 
19
20
  def create_condition_matcher(matchers)
20
- CombiningMatcher.new(combiner, matchers) if combiner
21
+ CombiningMatcher.new(@config.split_logger, combiner, matchers) if combiner
21
22
  end
22
23
 
23
24
  #
@@ -45,11 +46,11 @@ module SplitIoClient
45
46
  end
46
47
 
47
48
  def negation_matcher(matcher)
48
- NegationMatcher.new(matcher)
49
+ NegationMatcher.new(@config.split_logger, matcher)
49
50
  end
50
51
 
51
52
  def matcher_all_keys(_params)
52
- @matcher_all_keys ||= AllKeysMatcher.new
53
+ @matcher_all_keys ||= AllKeysMatcher.new(@config.split_logger)
53
54
  end
54
55
 
55
56
  # returns UserDefinedSegmentMatcher[object]
@@ -57,7 +58,7 @@ module SplitIoClient
57
58
  matcher = params[:matcher]
58
59
  segment_name = matcher[:userDefinedSegmentMatcherData] && matcher[:userDefinedSegmentMatcherData][:segmentName]
59
60
 
60
- UserDefinedSegmentMatcher.new(params[:segments_repository], segment_name)
61
+ UserDefinedSegmentMatcher.new(params[:segments_repository], segment_name, @config.split_logger)
61
62
  end
62
63
 
63
64
  # returns WhitelistMatcher[object] the whitelist for this condition in case it has a whitelist matcher
@@ -72,7 +73,7 @@ module SplitIoClient
72
73
  white_list = (matcher[:whitelistMatcherData])[:whitelist]
73
74
  result = { attribute: attribute, value: white_list }
74
75
  end
75
- WhitelistMatcher.new(result)
76
+ WhitelistMatcher.new(result, @config.split_logger, @config.split_validator)
76
77
  end
77
78
 
78
79
  def matcher_equal_to(params)
@@ -80,7 +81,7 @@ module SplitIoClient
80
81
  attribute = (matcher[:keySelector])[:attribute]
81
82
  value = (matcher[:unaryNumericMatcherData])[:value]
82
83
  data_type = (matcher[:unaryNumericMatcherData])[:dataType]
83
- EqualToMatcher.new(attribute: attribute, value: value, data_type: data_type)
84
+ EqualToMatcher.new({attribute: attribute, value: value, data_type: data_type}, @config.split_logger, @config.split_validator)
84
85
  end
85
86
 
86
87
  def matcher_greater_than_or_equal_to(params)
@@ -88,7 +89,7 @@ module SplitIoClient
88
89
  attribute = (matcher[:keySelector])[:attribute]
89
90
  value = (matcher[:unaryNumericMatcherData])[:value]
90
91
  data_type = (matcher[:unaryNumericMatcherData])[:dataType]
91
- GreaterThanOrEqualToMatcher.new(attribute: attribute, value: value, data_type: data_type)
92
+ GreaterThanOrEqualToMatcher.new({attribute: attribute, value: value, data_type: data_type}, @config.split_logger, @config.split_validator)
92
93
  end
93
94
 
94
95
  def matcher_less_than_or_equal_to(params)
@@ -96,7 +97,7 @@ module SplitIoClient
96
97
  attribute = (matcher[:keySelector])[:attribute]
97
98
  value = (matcher[:unaryNumericMatcherData])[:value]
98
99
  data_type = (matcher[:unaryNumericMatcherData])[:dataType]
99
- LessThanOrEqualToMatcher.new(attribute: attribute, value: value, data_type: data_type)
100
+ LessThanOrEqualToMatcher.new({attribute: attribute, value: value, data_type: data_type}, @config.split_logger, @config.split_validator)
100
101
  end
101
102
 
102
103
  def matcher_between(params)
@@ -105,76 +106,86 @@ module SplitIoClient
105
106
  start_value = (matcher[:betweenMatcherData])[:start]
106
107
  end_value = (matcher[:betweenMatcherData])[:end]
107
108
  data_type = (matcher[:betweenMatcherData])[:dataType]
108
- BetweenMatcher.new(attribute: attribute, start_value: start_value, end_value: end_value, data_type: data_type)
109
+ BetweenMatcher.new({attribute: attribute, start_value: start_value, end_value: end_value, data_type: data_type}, @config.split_logger, @config.split_validator)
109
110
  end
110
111
 
111
112
  def matcher_equal_to_set(params)
112
113
  EqualToSetMatcher.new(
113
114
  params[:matcher][:keySelector][:attribute],
114
- params[:matcher][:whitelistMatcherData][:whitelist]
115
+ params[:matcher][:whitelistMatcherData][:whitelist],
116
+ @config.split_logger
115
117
  )
116
118
  end
117
119
 
118
120
  def matcher_contains_any_of_set(params)
119
121
  ContainsAnyMatcher.new(
120
122
  params[:matcher][:keySelector][:attribute],
121
- params[:matcher][:whitelistMatcherData][:whitelist]
123
+ params[:matcher][:whitelistMatcherData][:whitelist],
124
+ @config.split_logger
122
125
  )
123
126
  end
124
127
 
125
128
  def matcher_contains_all_of_set(params)
126
129
  ContainsAllMatcher.new(
127
130
  params[:matcher][:keySelector][:attribute],
128
- params[:matcher][:whitelistMatcherData][:whitelist]
131
+ params[:matcher][:whitelistMatcherData][:whitelist],
132
+ @config.split_logger
129
133
  )
130
134
  end
131
135
 
132
136
  def matcher_part_of_set(params)
133
137
  PartOfSetMatcher.new(
134
138
  params[:matcher][:keySelector][:attribute],
135
- params[:matcher][:whitelistMatcherData][:whitelist]
139
+ params[:matcher][:whitelistMatcherData][:whitelist],
140
+ @config.split_logger
136
141
  )
137
142
  end
138
143
 
139
144
  def matcher_starts_with(params)
140
145
  StartsWithMatcher.new(
141
146
  params[:matcher][:keySelector][:attribute],
142
- params[:matcher][:whitelistMatcherData][:whitelist]
147
+ params[:matcher][:whitelistMatcherData][:whitelist],
148
+ @config.split_logger
143
149
  )
144
150
  end
145
151
 
146
152
  def matcher_ends_with(params)
147
153
  EndsWithMatcher.new(
148
154
  params[:matcher][:keySelector][:attribute],
149
- params[:matcher][:whitelistMatcherData][:whitelist]
155
+ params[:matcher][:whitelistMatcherData][:whitelist],
156
+ @config.split_logger
150
157
  )
151
158
  end
152
159
 
153
160
  def matcher_contains_string(params)
154
161
  ContainsMatcher.new(
155
162
  params[:matcher][:keySelector][:attribute],
156
- params[:matcher][:whitelistMatcherData][:whitelist]
163
+ params[:matcher][:whitelistMatcherData][:whitelist],
164
+ @config.split_logger, @config.split_validator
157
165
  )
158
166
  end
159
167
 
160
168
  def matcher_in_split_treatment(params)
161
169
  DependencyMatcher.new(
162
170
  params[:matcher][:dependencyMatcherData][:split],
163
- params[:matcher][:dependencyMatcherData][:treatments]
171
+ params[:matcher][:dependencyMatcherData][:treatments],
172
+ @config.split_logger
164
173
  )
165
174
  end
166
175
 
167
176
  def matcher_equal_to_boolean(params)
168
177
  EqualToBooleanMatcher.new(
169
178
  params[:matcher][:keySelector][:attribute],
170
- params[:matcher][:booleanMatcherData]
179
+ params[:matcher][:booleanMatcherData],
180
+ @config.split_logger
171
181
  )
172
182
  end
173
183
 
174
184
  def matcher_matches_string(params)
175
185
  MatchesStringMatcher.new(
176
186
  params[:matcher][:keySelector][:attribute],
177
- params[:matcher][:stringMatcherData]
187
+ params[:matcher][:stringMatcherData],
188
+ @config.split_logger
178
189
  )
179
190
  end
180
191
 
@@ -2,10 +2,11 @@ module SplitIoClient
2
2
  module Engine
3
3
  module Parser
4
4
  class Evaluator
5
- def initialize(segments_repository, splits_repository, multiple = false)
5
+ def initialize(segments_repository, splits_repository, config, multiple = false)
6
6
  @splits_repository = splits_repository
7
7
  @segments_repository = segments_repository
8
8
  @multiple = multiple
9
+ @config = config
9
10
  @cache = {}
10
11
  end
11
12
 
@@ -48,7 +49,7 @@ module SplitIoClient
48
49
  splitter = Splitter.new
49
50
 
50
51
  split[:conditions].each do |c|
51
- condition = SplitIoClient::Condition.new(c)
52
+ condition = SplitIoClient::Condition.new(c, @config)
52
53
 
53
54
  next if condition.empty?
54
55
 
@@ -31,7 +31,8 @@ module SplitIoClient
31
31
  impressions_repository,
32
32
  metrics_repository,
33
33
  events_repository,
34
- sdk_blocker
34
+ sdk_blocker,
35
+ config
35
36
  )
36
37
  @api_key = api_key
37
38
  @splits_repository = splits_repository
@@ -41,8 +42,9 @@ module SplitIoClient
41
42
  @events_repository = events_repository
42
43
  @metrics = Metrics.new(100, @metrics_repository)
43
44
  @sdk_blocker = sdk_blocker
45
+ @config = config
44
46
 
45
- start_standalone_components if SplitIoClient.configuration.mode == :standalone
47
+ start_standalone_components if @config.standalone?
46
48
  end
47
49
 
48
50
  def start_standalone_components
@@ -55,27 +57,27 @@ module SplitIoClient
55
57
 
56
58
  # Starts thread which loops constantly and stores splits in the splits_repository of choice
57
59
  def split_store
58
- SplitStore.new(@splits_repository, @api_key, @metrics, @sdk_blocker).call
60
+ SplitStore.new(@splits_repository, @api_key, @metrics, @config, @sdk_blocker).call
59
61
  end
60
62
 
61
63
  # Starts thread which loops constantly and stores segments in the segments_repository of choice
62
64
  def segment_store
63
- SegmentStore.new(@segments_repository, @api_key, @metrics, @sdk_blocker).call
65
+ SegmentStore.new(@segments_repository, @api_key, @metrics, @config, @sdk_blocker).call
64
66
  end
65
67
 
66
68
  # Starts thread which loops constantly and sends impressions to the Split API
67
69
  def impressions_sender
68
- ImpressionsSender.new(@impressions_repository, @api_key).call
70
+ ImpressionsSender.new(@impressions_repository, @api_key, @config).call
69
71
  end
70
72
 
71
73
  # Starts thread which loops constantly and sends metrics to the Split API
72
74
  def metrics_sender
73
- MetricsSender.new(@metrics_repository, @api_key).call
75
+ MetricsSender.new(@metrics_repository, @api_key, @config).call
74
76
  end
75
77
 
76
78
  # Starts thread which loops constantly and sends events to the Split API
77
79
  def events_sender
78
- EventsSender.new(@events_repository).call
80
+ EventsSender.new(@events_repository, @config).call
79
81
  end
80
82
  end
81
83
  end
@@ -2,11 +2,12 @@ module SplitIoClient
2
2
  class LocalhostSplitFactory
3
3
  attr_reader :client, :manager
4
4
 
5
- def initialize(splits_file, reload_rate = nil, logger = nil)
5
+ def initialize(splits_file, config, reload_rate = nil, logger = nil)
6
6
  @splits_file = splits_file
7
7
  @reload_rate = reload_rate
8
+ @config = config
8
9
 
9
- @client = LocalhostSplitClient.new(@splits_file, @reload_rate)
10
+ @client = LocalhostSplitClient.new(@splits_file, @config, @reload_rate)
10
11
  @manager = LocalhostSplitManager.new(@splits_file, @reload_rate)
11
12
  end
12
13
  end