openfeature-ruby-sdk-contrib 0.3.0 → 0.4.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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa6213b99bd5852e81c1fe7184950031c35038513eeef5ac9003694197ba1633
|
4
|
+
data.tar.gz: 3aa3234f79d229c9520580d217d8cdf859f6f95ec80967b5a63c994bea83f454
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c7d32302bfe0f293e9a7aaf00413a289ee7c0805dc76f5d623b7a0f972d156a63b5783e51a1ef55c6a39d47f6e48608d665d6d714e7161abd7e2eb37eafec08
|
7
|
+
data.tar.gz: 48828fff61ed31bc5c97fabdccdf8c578091d8eb814cb9b21ec8a77a3ede301bed6f36a7fc87b32370b93dd494d15534605eaf83444e5375eb9c2fbc2a310b5b
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
openfeature-ruby-sdk-contrib (0.
|
4
|
+
openfeature-ruby-sdk-contrib (0.3.0)
|
5
5
|
concurrent-ruby (~> 1.2.2)
|
6
6
|
faraday (~> 2.7.10)
|
7
7
|
openfeature-sdk (~> 0.1)
|
@@ -10,11 +10,13 @@ GEM
|
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
12
|
ast (2.4.2)
|
13
|
+
base64 (0.2.0)
|
13
14
|
byebug (11.1.3)
|
14
15
|
coderay (1.1.3)
|
15
16
|
concurrent-ruby (1.2.2)
|
16
17
|
diff-lcs (1.5.0)
|
17
|
-
faraday (2.7.
|
18
|
+
faraday (2.7.12)
|
19
|
+
base64
|
18
20
|
faraday-net_http (>= 2.0, < 3.1)
|
19
21
|
ruby2_keywords (>= 0.0.4)
|
20
22
|
faraday-net_http (3.0.2)
|
@@ -95,6 +97,7 @@ GEM
|
|
95
97
|
|
96
98
|
PLATFORMS
|
97
99
|
arm64-darwin-22
|
100
|
+
arm64-darwin-23
|
98
101
|
|
99
102
|
DEPENDENCIES
|
100
103
|
openfeature-ruby-sdk-contrib!
|
data/README.md
CHANGED
@@ -107,6 +107,32 @@ Rails.application.config.openfeature_client = OpenFeature::SDK::Contrib::Client.
|
|
107
107
|
)
|
108
108
|
```
|
109
109
|
|
110
|
+
#### Custom Auth Strategy
|
111
|
+
|
112
|
+
Some applications may require more finesse to authenticate, for example, an OAuth Flow. To use this style flow, the `extra_options` key that is passed to `HttpProvider.new` accepts an `authentication_strategy` key. This key gets passed to the internal Faraday client as a middleware, so it can be anything usable as a Faraday middleware. Example:
|
113
|
+
|
114
|
+
```
|
115
|
+
module FaradayMiddleware
|
116
|
+
class MyCustomMiddleware < Faraday::Middleware
|
117
|
+
def initialize(args)
|
118
|
+
# do stuff
|
119
|
+
end
|
120
|
+
|
121
|
+
def call(env)
|
122
|
+
@app.call(env)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
Faraday::Request.register_middleware my_custom_middleware: -> { MyCustomMiddleware }
|
127
|
+
end
|
128
|
+
|
129
|
+
Rails.application.config.openfeature_provider = OpenFeature::SDK::Contrib::Providers::HttpProvider.new(
|
130
|
+
extra_options: {
|
131
|
+
authentication_strategy: [:my_custom_middleware, my_custom_middleware_arguments]
|
132
|
+
}
|
133
|
+
)
|
134
|
+
```
|
135
|
+
|
110
136
|
## Development
|
111
137
|
|
112
138
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -155,7 +155,7 @@ module OpenFeature
|
|
155
155
|
# Returns a value for the requested flag_key
|
156
156
|
#
|
157
157
|
# @param flag_key [String] requested flag key
|
158
|
-
# @param type ["boolean", "number", "float", "string"]
|
158
|
+
# @param type ["boolean", "number", "float", "string", "array"]
|
159
159
|
def read_value_with_cache(flag_key:, type:)
|
160
160
|
read_all_values_with_cache.detect { |f| f["kind"] == type && f["name"] == flag_key }
|
161
161
|
end
|
@@ -30,9 +30,10 @@ module OpenFeature
|
|
30
30
|
NAME = "Http Provider"
|
31
31
|
|
32
32
|
def read_and_parse_flags
|
33
|
-
headers
|
34
|
-
uri
|
35
|
-
base_url
|
33
|
+
headers = extra_options.fetch(:headers, {})
|
34
|
+
uri = URI(source)
|
35
|
+
base_url = "#{uri.scheme}://#{uri.host}:#{uri.port}"
|
36
|
+
authentication_strategy = extra_options.delete(:authentication_strategy)
|
36
37
|
|
37
38
|
if format == :yaml
|
38
39
|
headers["Content-Type"] ||= "application/yaml"
|
@@ -40,8 +41,11 @@ module OpenFeature
|
|
40
41
|
headers["Content-Type"] ||= "application/json"
|
41
42
|
end
|
42
43
|
|
43
|
-
client = Faraday.new(url: base_url, **extra_options, headers: headers)
|
44
|
-
|
44
|
+
client = Faraday.new(url: base_url, **extra_options, headers: headers) do |conn|
|
45
|
+
conn.request(*authentication_strategy) if authentication_strategy
|
46
|
+
end
|
47
|
+
|
48
|
+
res = client.get(uri.request_uri)
|
45
49
|
|
46
50
|
return custom_parser.call(res.body) if custom_parser
|
47
51
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openfeature-ruby-sdk-contrib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eugene Howe
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: '0'
|
96
96
|
requirements: []
|
97
|
-
rubygems_version: 3.
|
97
|
+
rubygems_version: 3.3.7
|
98
98
|
signing_key:
|
99
99
|
specification_version: 4
|
100
100
|
summary: Providers and Hooks for the OpenFeature Ruby SDK
|