openfeature-ruby-sdk-contrib 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 320d3f69c1bcab1d432d639303486551c4d1fc92afa77be8b9ffc9843a4f48fd
4
- data.tar.gz: 92b8a57f051e57788ce6082c66fd3b222ec58e1eb7ea42b7fd0f664d9e428f6f
3
+ metadata.gz: 33279a645ab02c54060f2842ae586d244b779d20c5a3bd275486f2dbecaf0687
4
+ data.tar.gz: 6a9c0a4ce90d78978ddb4ef95e2cc880ab2601ef03bf23b7e58700e2a4b9c809
5
5
  SHA512:
6
- metadata.gz: b7bcdc2163db7f58f0741dc6c172769ef11500647676908e200e77edb52bdb48f2be34dfd5f8374388d1b519f24b0febfbe066893b75b75846bc808ffd6d8b71
7
- data.tar.gz: 270aedda5e88c6402c5d5a49a0342d824c8848f71cae05b003c847942abf496d916fe02ca4807a1b87bf28a051568abc08b81af32b1715b69c2878e80664e779
6
+ metadata.gz: bbf841634b916502ff751778337d6b81e8472eb1186b20a687bf7fa3accfe82a96cef52ede9a42567f04b4cdbd274d44733d07c4c043d15dc7340d0397c7e402
7
+ data.tar.gz: b52c456508a087aab56ef26a42f20177e3a71145c785ba44dff405462164d112c18a3a6e30dbd93d0c22a49690085ed0ed218f521ba56f9ff1ff83b366b8b544
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- openfeature-ruby-sdk-contrib (0.0.1)
4
+ openfeature-ruby-sdk-contrib (0.0.2)
5
5
  concurrent-ruby (~> 1.2.2)
6
6
  faraday (~> 2.7.4)
7
7
  openfeature-sdk (~> 0.1)
@@ -0,0 +1,13 @@
1
+ require "openfeature/sdk/client"
2
+
3
+ module OpenFeature
4
+ module SDK
5
+ module Contrib
6
+ class Client < OpenFeature::SDK::Client
7
+ def all_flags
8
+ @provider.read_all_values_with_cache
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -116,32 +116,35 @@ module OpenFeature
116
116
  assert_type(value: source_value, default_value: default_value, return_types: [Hash])
117
117
  end
118
118
 
119
- private
120
-
121
- # Returns a value for the requested flag_key
122
- #
123
- # @param flag_key [String] requested flag key
124
- # @param type ["boolean", "number", "float", "string"]
125
- def read_value_with_cache(flag_key:, type:)
119
+ def read_all_values_with_cache
126
120
  now = Time.now.to_i
127
121
 
128
122
  read_from_cache = if !@flag_contents
129
123
  false
130
- elsif cache_duration == Float::INFINITY
131
- true
132
124
  elsif !@last_cache
133
125
  false
126
+ elsif cache_duration == Float::INFINITY
127
+ true
134
128
  else
135
129
  now - @last_cache < cache_duration
136
130
  end
137
131
 
138
132
  unless read_from_cache
139
- @last_cache = Time.now.to_i
140
- @flag_contents = read_and_parse_flags unless read_from_cache
133
+ read_and_parse_flags
134
+ @last_cache = Time.now.to_i
141
135
  end
142
136
 
143
- flags = deep_keys.empty? ? @flag_contents : @flag_contents.dig(*deep_keys)
144
- flag = flags.detect { |f| f["kind"] == type && f["name"] == flag_key }
137
+ deep_keys.empty? ? @flag_contents : @flag_contents.dig(*deep_keys)
138
+ end
139
+
140
+ private
141
+
142
+ # Returns a value for the requested flag_key
143
+ #
144
+ # @param flag_key [String] requested flag key
145
+ # @param type ["boolean", "number", "float", "string"]
146
+ def read_value_with_cache(flag_key:, type:)
147
+ read_all_values_with_cache.detect { |f| f["kind"] == type && f["name"] == flag_key }
145
148
  end
146
149
 
147
150
  def read_and_parse_flags
@@ -31,11 +31,13 @@ module OpenFeature
31
31
 
32
32
  return custom_parser.call(file_contents) if custom_parser
33
33
 
34
- if format == :yaml
35
- YAML.safe_load(file_contents)
36
- else
37
- JSON.parse(file_contents)
38
- end
34
+ @flag_contents = if format == :yaml
35
+ YAML.safe_load(file_contents)
36
+ else
37
+ JSON.parse(file_contents)
38
+ end
39
+
40
+ @flag_contents
39
41
  end
40
42
  end
41
43
  end
@@ -3,7 +3,7 @@
3
3
  module OpenFeature
4
4
  module SDK
5
5
  module Contrib
6
- VERSION = "0.0.2"
6
+ VERSION = "0.0.3"
7
7
  end
8
8
  end
9
9
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "contrib/client"
3
4
  require_relative "contrib/version"
4
5
  require_relative "contrib/providers/common"
5
6
  require_relative "contrib/providers/file_provider"
@@ -10,4 +11,4 @@ module OpenFeature
10
11
  InvalidReturnValueError = Class.new(StandardError)
11
12
  end
12
13
  end
13
- end
14
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openfeature-ruby-sdk-contrib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eugene Howe
@@ -179,6 +179,7 @@ files:
179
179
  - README.md
180
180
  - Rakefile
181
181
  - lib/open_feature/sdk/contrib.rb
182
+ - lib/open_feature/sdk/contrib/client.rb
182
183
  - lib/open_feature/sdk/contrib/providers/common.rb
183
184
  - lib/open_feature/sdk/contrib/providers/file_provider.rb
184
185
  - lib/open_feature/sdk/contrib/version.rb