openfeature-ruby-sdk-contrib 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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