openfeature-ruby-sdk-contrib 0.3.0 → 0.4.0

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: 2cf8cd0512f8cb54964eef7abc7152a8a1ff440b87ff180c3e5cf4d5672fe2be
4
- data.tar.gz: f67486141dd2f5e0847b0884dd95d8aa3ec6e8176495164637f9fdca6c71fd99
3
+ metadata.gz: aa6213b99bd5852e81c1fe7184950031c35038513eeef5ac9003694197ba1633
4
+ data.tar.gz: 3aa3234f79d229c9520580d217d8cdf859f6f95ec80967b5a63c994bea83f454
5
5
  SHA512:
6
- metadata.gz: ff01303ffef255120f9eb98855e25eff6669b88153ec04c40e7700a8dc14b1bb620be992a509067ff0c80352c12706a0faa50e9d2af42bb6c5dff917c1690562
7
- data.tar.gz: 297f07e8736d693bf7f68b22aa2236e6836c8b86cbaa36d81e86e045f91771b985bc0595e8622fbe0889b810ca9ffd2f6a6aaaa08b66232e5ccf30334889b741
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.2.1)
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.10)
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 = extra_options.fetch(:headers, {})
34
- uri = URI(source)
35
- base_url = "#{uri.scheme}://#{uri.host}:#{uri.port}"
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
- res = client.get(uri.request_uri)
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
 
@@ -3,7 +3,7 @@
3
3
  module OpenFeature
4
4
  module SDK
5
5
  module Contrib
6
- VERSION = "0.3.0"
6
+ VERSION = "0.4.0"
7
7
  end
8
8
  end
9
9
  end
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.3.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: 2023-10-03 00:00:00.000000000 Z
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.2.33
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