splitclient-rb 4.1.0 → 4.2.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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.txt +8 -0
  3. data/NEWS +6 -0
  4. data/README.md +5 -18
  5. data/lib/splitclient-rb.rb +65 -54
  6. data/lib/{cache → splitclient-rb/cache}/adapters/memory_adapter.rb +0 -0
  7. data/lib/{cache → splitclient-rb/cache}/adapters/memory_adapters/map_adapter.rb +0 -0
  8. data/lib/{cache → splitclient-rb/cache}/adapters/memory_adapters/queue_adapter.rb +0 -0
  9. data/lib/{cache → splitclient-rb/cache}/adapters/redis_adapter.rb +0 -0
  10. data/lib/{cache → splitclient-rb/cache}/repositories/impressions/memory_repository.rb +0 -0
  11. data/lib/{cache → splitclient-rb/cache}/repositories/impressions/redis_repository.rb +0 -0
  12. data/lib/{cache → splitclient-rb/cache}/repositories/impressions_repository.rb +0 -0
  13. data/lib/{cache → splitclient-rb/cache}/repositories/metrics/memory_repository.rb +0 -0
  14. data/lib/{cache → splitclient-rb/cache}/repositories/metrics/redis_repository.rb +0 -0
  15. data/lib/{cache → splitclient-rb/cache}/repositories/metrics_repository.rb +0 -0
  16. data/lib/{cache → splitclient-rb/cache}/repositories/repository.rb +0 -0
  17. data/lib/{cache → splitclient-rb/cache}/repositories/segments_repository.rb +0 -0
  18. data/lib/{cache → splitclient-rb/cache}/repositories/splits_repository.rb +0 -0
  19. data/lib/{cache → splitclient-rb/cache}/senders/impressions_formatter.rb +0 -0
  20. data/lib/{cache → splitclient-rb/cache}/senders/impressions_sender.rb +1 -1
  21. data/lib/{cache → splitclient-rb/cache}/senders/metrics_sender.rb +1 -1
  22. data/lib/{cache → splitclient-rb/cache}/stores/sdk_blocker.rb +0 -0
  23. data/lib/{cache → splitclient-rb/cache}/stores/segment_store.rb +0 -0
  24. data/lib/{cache → splitclient-rb/cache}/stores/split_store.rb +0 -0
  25. data/lib/splitclient-rb/clients/localhost_split_client.rb +3 -3
  26. data/lib/splitclient-rb/clients/split_client.rb +28 -25
  27. data/lib/{engine → splitclient-rb/engine}/api/client.rb +4 -4
  28. data/lib/splitclient-rb/engine/api/faraday_middleware/gzip.rb +55 -0
  29. data/lib/{engine → splitclient-rb/engine}/api/impressions.rb +0 -0
  30. data/lib/{engine → splitclient-rb/engine}/api/metrics.rb +0 -0
  31. data/lib/{engine → splitclient-rb/engine}/api/segments.rb +0 -0
  32. data/lib/{engine → splitclient-rb/engine}/api/splits.rb +0 -0
  33. data/lib/{engine → splitclient-rb/engine}/evaluator/splitter.rb +2 -2
  34. data/lib/{engine → splitclient-rb/engine}/matchers/all_keys_matcher.rb +1 -1
  35. data/lib/{engine → splitclient-rb/engine}/matchers/between_matcher.rb +2 -2
  36. data/lib/{engine → splitclient-rb/engine}/matchers/combiners.rb +0 -0
  37. data/lib/{engine → splitclient-rb/engine}/matchers/combining_matcher.rb +10 -8
  38. data/lib/{engine → splitclient-rb/engine}/matchers/contains_all_matcher.rb +1 -1
  39. data/lib/{engine → splitclient-rb/engine}/matchers/contains_any_matcher.rb +1 -1
  40. data/lib/{engine → splitclient-rb/engine}/matchers/contains_matcher.rb +1 -1
  41. data/lib/splitclient-rb/engine/matchers/dependency_matcher.rb +16 -0
  42. data/lib/{engine → splitclient-rb/engine}/matchers/ends_with_matcher.rb +1 -1
  43. data/lib/splitclient-rb/engine/matchers/equal_to_boolean_matcher.rb +21 -0
  44. data/lib/{engine → splitclient-rb/engine}/matchers/equal_to_matcher.rb +2 -2
  45. data/lib/{engine → splitclient-rb/engine}/matchers/equal_to_set_matcher.rb +1 -1
  46. data/lib/{engine → splitclient-rb/engine}/matchers/greater_than_or_equal_to_matcher.rb +2 -2
  47. data/lib/{engine → splitclient-rb/engine}/matchers/less_than_or_equal_to_matcher.rb +2 -2
  48. data/lib/splitclient-rb/engine/matchers/matches_string_matcher.rb +23 -0
  49. data/lib/{engine → splitclient-rb/engine}/matchers/negation_matcher.rb +2 -2
  50. data/lib/{engine → splitclient-rb/engine}/matchers/part_of_set_matcher.rb +1 -1
  51. data/lib/{engine → splitclient-rb/engine}/matchers/set_matcher.rb +0 -0
  52. data/lib/{engine → splitclient-rb/engine}/matchers/starts_with_matcher.rb +1 -1
  53. data/lib/{engine → splitclient-rb/engine}/matchers/user_defined_segment_matcher.rb +2 -2
  54. data/lib/{engine → splitclient-rb/engine}/matchers/whitelist_matcher.rb +2 -2
  55. data/lib/{engine → splitclient-rb/engine}/metrics/binary_search_latency_tracker.rb +0 -0
  56. data/lib/{engine → splitclient-rb/engine}/metrics/metrics.rb +0 -0
  57. data/lib/splitclient-rb/engine/models/label.rb +7 -0
  58. data/lib/{engine → splitclient-rb/engine}/models/split.rb +0 -0
  59. data/lib/splitclient-rb/engine/models/treatment.rb +3 -0
  60. data/lib/{engine → splitclient-rb/engine}/parser/condition.rb +21 -0
  61. data/lib/{engine/parser/split_treatment.rb → splitclient-rb/engine/parser/evaluator.rb} +29 -13
  62. data/lib/{engine → splitclient-rb/engine}/parser/partition.rb +0 -0
  63. data/lib/{engine → splitclient-rb/engine}/parser/split_adapter.rb +0 -0
  64. data/lib/{exceptions → splitclient-rb/exceptions}/sdk_blocker_timeout_expired_exception.rb +0 -0
  65. data/lib/splitclient-rb/localhost_utils.rb +1 -1
  66. data/lib/splitclient-rb/split_config.rb +7 -4
  67. data/lib/splitclient-rb/utilitites.rb +41 -0
  68. data/lib/splitclient-rb/version.rb +1 -1
  69. data/splitclient-rb.gemspec +6 -8
  70. metadata +76 -100
  71. data/lib/engine/models/label.rb +0 -13
  72. data/lib/engine/partitions/treatments.rb +0 -36
  73. data/lib/splitclient-rb_utilitites.rb +0 -39
@@ -1,13 +0,0 @@
1
- module SplitIoClient
2
- module Engine
3
- module Models
4
- class Label
5
- ARCHIVED = 'archived'.freeze
6
- NO_RULE_MATCHED = 'no rule matched'.freeze
7
- EXCEPTION = 'exception'.freeze
8
- KILLED = 'killed'.freeze
9
- NOT_IN_SPLIT = 'not in split'.freeze
10
- end
11
- end
12
- end
13
- end
@@ -1,36 +0,0 @@
1
- module SplitIoClient
2
- #
3
- # represents the possible return values for a treatment
4
- #
5
- class Treatments < NoMethodError
6
- # Constants to represent treatment values
7
- CONTROL = 'control'
8
- OFF = 'off'
9
- ON = 'on'
10
-
11
- # get the actual value for the given treatment type
12
- #
13
- # @param type [string] treatment type
14
- #
15
- # @return [Treatment] treatment type value
16
- def self.get_type(type)
17
- case type
18
- when 'on'
19
- return ON
20
- when 'off', 'control'
21
- return CONTROL
22
- else # default return off
23
- return CONTROL
24
- end
25
- end
26
-
27
- # checks if the give treatment matches control type
28
- #
29
- # @param type [string] treatment type
30
- #
31
- # @return [boolean] true if matches, false otherwise
32
- def self.is_control?(treatment)
33
- get_type(treatment).equal?(CONTROL) ? true : false
34
- end
35
- end
36
- end
@@ -1,39 +0,0 @@
1
- module Utilities
2
- extend self
3
-
4
- # Convert String with Time info to its epoch FixNum previously setting to zero the seconds
5
- def to_epoch(value)
6
- parsed = Time.parse(value)
7
- zeroed = Time.new(parsed.year, parsed.month, parsed.day, parsed.hour, parsed.min, 0, 0)
8
-
9
- zeroed.to_i
10
- end
11
-
12
- def to_epoch_milis(value)
13
- to_epoch(value) * 1000
14
- end
15
-
16
- def to_milis_zero_out_from_seconds(value)
17
- parsed_value = Time.strptime(value.to_s, '%s').utc
18
- zeroed = Time.new(parsed_value.year, parsed_value.month, parsed_value.day, parsed_value.hour, parsed_value.min, 0, 0)
19
-
20
- zeroed.to_i * 1000
21
- rescue
22
- return :non_valid_date_info
23
- end
24
-
25
- def to_milis_zero_out_from_hour(value)
26
- parsed_value = Time.strptime(value.to_s, '%s').utc
27
- zeroed = Time.new(parsed_value.year, parsed_value.month, parsed_value.day, 0, 0, 0, 0)
28
-
29
- zeroed.to_i * 1000
30
- rescue StandardError
31
- return :non_valid_date_info
32
- end
33
-
34
- def randomize_interval(interval)
35
- random_factor = Random.new.rand(50..100) / 100.0
36
-
37
- interval * random_factor
38
- end
39
- end