flipt_client 0.10.0 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +33 -1
- data/lib/ext/darwin_arm64/libfliptengine.dylib +0 -0
- data/lib/ext/darwin_x86_64/libfliptengine.dylib +0 -0
- data/lib/ext/linux_arm64/libfliptengine.so +0 -0
- data/lib/ext/linux_x86_64/libfliptengine.so +0 -0
- data/lib/ext/windows_x86_64/fliptengine.dll +0 -0
- data/lib/flipt_client/version.rb +1 -1
- data/lib/flipt_client.rb +29 -9
- metadata +3 -10
- data/lib/ext/darwin_arm64/libfliptengine.d +0 -1
- data/lib/ext/darwin_arm64/libfliptengine.rlib +0 -0
- data/lib/ext/darwin_x86_64/libfliptengine.d +0 -1
- data/lib/ext/darwin_x86_64/libfliptengine.rlib +0 -0
- data/lib/ext/linux_arm64/libfliptengine.d +0 -1
- data/lib/ext/linux_arm64/libfliptengine.rlib +0 -0
- data/lib/ext/linux_x86_64/libfliptengine.d +0 -1
- data/lib/ext/linux_x86_64/libfliptengine.rlib +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20580ac221c34294feeb51f8a9198980d476fce87e8aafd50c9ac077df3ad498
|
4
|
+
data.tar.gz: f8342ae2127c00ca52b3f593bc094987050df738edf14567d4f5b988e22d4f47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab287927c314e8c00a930ca7bfb92eed25788ee82d9d600e2eabb564abba98e33e4af3bc0fa5706ff4a12c8e398c732db1b50697799bccd28d14cbaf59e0fafb
|
7
|
+
data.tar.gz: cfd783d6e15b9fb5613f1c793d06d965330f574491fd2046a284fc579542cef57ffb49b157e6db7deaaf032eedaa1ae694d68682dba17752bd10834530aab1b6
|
data/README.md
CHANGED
@@ -10,6 +10,28 @@ The `flipt-client-ruby` library contains the Ruby source code for the Flipt [cli
|
|
10
10
|
gem install flipt_client
|
11
11
|
```
|
12
12
|
|
13
|
+
## How Does It Work?
|
14
|
+
|
15
|
+
The `flipt-client-ruby` library is a wrapper around the [flipt-engine-ffi](https://github.com/flipt-io/flipt-client-sdks/tree/main/flipt-engine-ffi) library.
|
16
|
+
|
17
|
+
All evaluation happens within the SDK, using the shared library built from the [flipt-engine-ffi](https://github.com/flipt-io/flipt-client-sdks/tree/main/flipt-engine-ffi) library.
|
18
|
+
|
19
|
+
Because the evaluation happens within the SDK, the SDKs can be used in environments where the Flipt server is not available or reachable after the initial data is fetched.
|
20
|
+
|
21
|
+
## Data Fetching
|
22
|
+
|
23
|
+
Upon instantiation, the `flipt-client-ruby` library will fetch the flag state from the Flipt server and store it in memory. This means that the first time you use the SDK, it will make a request to the Flipt server.
|
24
|
+
|
25
|
+
### Polling (Default)
|
26
|
+
|
27
|
+
By default, the SDK will poll the Flipt server for new flag state at a regular interval. This interval can be configured using the `update_interval` option when constructing a client. The default interval is 120 seconds.
|
28
|
+
|
29
|
+
### Streaming (Flipt Cloud Only)
|
30
|
+
|
31
|
+
[Flipt Cloud](https://flipt.io/cloud) users can use the `streaming` fetch method to stream flag state changes from the Flipt server to the SDK.
|
32
|
+
|
33
|
+
When in streaming mode, the SDK will connect to the Flipt server and open a persistent connection that will remain open until the client is closed. The SDK will then receive flag state changes in real-time.
|
34
|
+
|
13
35
|
## Supported Architectures
|
14
36
|
|
15
37
|
This SDK currently supports the following OSes/architectures:
|
@@ -18,6 +40,7 @@ This SDK currently supports the following OSes/architectures:
|
|
18
40
|
- Linux arm64
|
19
41
|
- MacOS x86_64
|
20
42
|
- MacOS arm64
|
43
|
+
- Windows x86_64
|
21
44
|
|
22
45
|
### Using System Libffi
|
23
46
|
|
@@ -60,11 +83,12 @@ puts resp
|
|
60
83
|
The `Flipt::EvaluationClient` constructor accepts two optional arguments:
|
61
84
|
|
62
85
|
- `namespace`: The namespace to fetch flag state from. If not provided, the client will default to the `default` namespace.
|
63
|
-
- `
|
86
|
+
- `opts`: A hash that supports several options for the client. The structure is:
|
64
87
|
- `url`: The URL of the upstream Flipt instance. If not provided, the client will default to `http://localhost:8080`.
|
65
88
|
- `update_interval`: The interval (in seconds) in which to fetch new flag state. If not provided, the client will default to 120 seconds.
|
66
89
|
- `authentication`: The authentication strategy to use when communicating with the upstream Flipt instance. If not provided, the client will default to no authentication. See the [Authentication](#authentication) section for more information.
|
67
90
|
- `reference`: The [reference](https://docs.flipt.io/guides/user/using-references) to use when fetching flag state. If not provided, reference will not be used.
|
91
|
+
- `fetch_mode`: The fetch mode to use when fetching flag state. If not provided, the client will default to polling.
|
68
92
|
|
69
93
|
### Authentication
|
70
94
|
|
@@ -92,3 +116,11 @@ The `FliptEvaluationClient` supports the following authentication strategies:
|
|
92
116
|
```bash
|
93
117
|
bundle exec ruby load_test.rb
|
94
118
|
```
|
119
|
+
|
120
|
+
## Contributing
|
121
|
+
|
122
|
+
Contributions are welcome! Please feel free to open an issue or submit a Pull Request.
|
123
|
+
|
124
|
+
## License
|
125
|
+
|
126
|
+
This project is licensed under the [MIT License](LICENSE).
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/flipt_client/version.rb
CHANGED
data/lib/flipt_client.rb
CHANGED
@@ -12,13 +12,14 @@ module Flipt
|
|
12
12
|
class EvaluationClient
|
13
13
|
extend FFI::Library
|
14
14
|
|
15
|
-
FLIPTENGINE = '
|
15
|
+
FLIPTENGINE = 'fliptengine'
|
16
16
|
|
17
17
|
LIB_FILES = {
|
18
|
-
/arm64-darwin/ => "ext/darwin_arm64
|
19
|
-
/x86_64-darwin/ => "ext/darwin_x86_64
|
20
|
-
/arm64-linux|aarch64-linux/ => "ext/linux_arm64
|
21
|
-
/x86_64-linux/ => "ext/linux_x86_64
|
18
|
+
/arm64-darwin/ => "ext/darwin_arm64/lib#{FLIPTENGINE}.dylib",
|
19
|
+
/x86_64-darwin/ => "ext/darwin_x86_64/lib#{FLIPTENGINE}.dylib",
|
20
|
+
/arm64-linux|aarch64-linux/ => "ext/linux_arm64/lib#{FLIPTENGINE}.so",
|
21
|
+
/x86_64-linux/ => "ext/linux_x86_64/lib#{FLIPTENGINE}.so",
|
22
|
+
/x86_64-mingw32/ => "ext/windows_x86_64/#{FLIPTENGINE}.dll"
|
22
23
|
}.freeze
|
23
24
|
|
24
25
|
def self.libfile
|
@@ -54,6 +55,8 @@ module Flipt
|
|
54
55
|
# @option opts [AuthenticationStrategy] :authentication strategy to authenticate with Flipt
|
55
56
|
# @option opts [Integer] :update_interval interval in seconds to update the cache
|
56
57
|
# @option opts [String] :reference reference to use for namespace data
|
58
|
+
# @option opts [Symbol] :fetch_mode fetch mode to use for the client (:polling or :streaming).
|
59
|
+
# Note: Streaming is currently only supported when using the SDK with Flipt Cloud (https://flipt.io/cloud).
|
57
60
|
def initialize(namespace = 'default', opts = {})
|
58
61
|
@namespace = namespace
|
59
62
|
|
@@ -64,6 +67,11 @@ module Flipt
|
|
64
67
|
'invalid authentication strategy'
|
65
68
|
end
|
66
69
|
|
70
|
+
fetch_mode = opts.fetch(:fetch_mode, :polling)
|
71
|
+
unless %i[polling streaming].include?(fetch_mode)
|
72
|
+
raise ArgumentError, 'invalid fetch mode'
|
73
|
+
end
|
74
|
+
|
67
75
|
opts[:authentication] = authentication.strategy
|
68
76
|
|
69
77
|
@engine = self.class.initialize_engine(namespace, opts.to_json)
|
@@ -83,7 +91,10 @@ module Flipt
|
|
83
91
|
validate_evaluation_request(evaluation_request)
|
84
92
|
resp, ptr = self.class.evaluate_variant(@engine, evaluation_request.to_json)
|
85
93
|
ptr = FFI::AutoPointer.new(ptr, EvaluationClient.method(:destroy_string))
|
86
|
-
JSON.parse(resp)
|
94
|
+
data = JSON.parse(resp)
|
95
|
+
raise StandardError, data['error_message'] if data['status'] != 'success'
|
96
|
+
|
97
|
+
data['result']
|
87
98
|
end
|
88
99
|
|
89
100
|
# Evaluate a boolean flag for a given request
|
@@ -95,7 +106,10 @@ module Flipt
|
|
95
106
|
validate_evaluation_request(evaluation_request)
|
96
107
|
resp, ptr = self.class.evaluate_boolean(@engine, evaluation_request.to_json)
|
97
108
|
ptr = FFI::AutoPointer.new(ptr, EvaluationClient.method(:destroy_string))
|
98
|
-
JSON.parse(resp)
|
109
|
+
data = JSON.parse(resp)
|
110
|
+
raise StandardError, data['error_message'] if data['status'] != 'success'
|
111
|
+
|
112
|
+
data['result']
|
99
113
|
end
|
100
114
|
|
101
115
|
# Evaluate a batch of flags for a given request
|
@@ -110,14 +124,20 @@ module Flipt
|
|
110
124
|
|
111
125
|
resp, ptr = self.class.evaluate_batch(@engine, batch_evaluation_request.to_json)
|
112
126
|
ptr = FFI::AutoPointer.new(ptr, EvaluationClient.method(:destroy_string))
|
113
|
-
JSON.parse(resp)
|
127
|
+
data = JSON.parse(resp)
|
128
|
+
raise StandardError, data['error_message'] if data['status'] != 'success'
|
129
|
+
|
130
|
+
data['result']
|
114
131
|
end
|
115
132
|
|
116
133
|
# List all flags in the namespace
|
117
134
|
def list_flags
|
118
135
|
resp, ptr = self.class.list_flags(@engine)
|
119
136
|
ptr = FFI::AutoPointer.new(ptr, EvaluationClient.method(:destroy_string))
|
120
|
-
JSON.parse(resp)
|
137
|
+
data = JSON.parse(resp)
|
138
|
+
raise StandardError, data['error_message'] if data['status'] != 'success'
|
139
|
+
|
140
|
+
data['result']
|
121
141
|
end
|
122
142
|
|
123
143
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flipt_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Flipt Devs
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Flipt Client Evaluation SDK
|
14
14
|
email:
|
@@ -19,19 +19,12 @@ extra_rdoc_files: []
|
|
19
19
|
files:
|
20
20
|
- README.md
|
21
21
|
- flipt-client-ruby.gemspec
|
22
|
-
- lib/ext/darwin_arm64/libfliptengine.d
|
23
22
|
- lib/ext/darwin_arm64/libfliptengine.dylib
|
24
|
-
- lib/ext/darwin_arm64/libfliptengine.rlib
|
25
|
-
- lib/ext/darwin_x86_64/libfliptengine.d
|
26
23
|
- lib/ext/darwin_x86_64/libfliptengine.dylib
|
27
|
-
- lib/ext/darwin_x86_64/libfliptengine.rlib
|
28
24
|
- lib/ext/flipt_engine.h
|
29
|
-
- lib/ext/linux_arm64/libfliptengine.d
|
30
|
-
- lib/ext/linux_arm64/libfliptengine.rlib
|
31
25
|
- lib/ext/linux_arm64/libfliptengine.so
|
32
|
-
- lib/ext/linux_x86_64/libfliptengine.d
|
33
|
-
- lib/ext/linux_x86_64/libfliptengine.rlib
|
34
26
|
- lib/ext/linux_x86_64/libfliptengine.so
|
27
|
+
- lib/ext/windows_x86_64/fliptengine.dll
|
35
28
|
- lib/flipt_client.rb
|
36
29
|
- lib/flipt_client/models.rb
|
37
30
|
- lib/flipt_client/version.rb
|
@@ -1 +0,0 @@
|
|
1
|
-
/Users/runner/work/flipt-client-sdks/flipt-client-sdks/target/aarch64-apple-darwin/release/libfliptengine.rlib: /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-engine-ffi/src/evaluator/mod.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-engine-ffi/src/lib.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-engine-ffi/src/parser/http.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-engine-ffi/src/parser/mod.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/error/mod.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/lib.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/models/common.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/models/flipt.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/models/mod.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/models/source.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/parser/mod.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/store/mod.rs
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
/Users/runner/work/flipt-client-sdks/flipt-client-sdks/target/x86_64-apple-darwin/release/libfliptengine.rlib: /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-engine-ffi/src/evaluator/mod.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-engine-ffi/src/lib.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-engine-ffi/src/parser/http.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-engine-ffi/src/parser/mod.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/error/mod.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/lib.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/models/common.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/models/flipt.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/models/mod.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/models/source.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/parser/mod.rs /Users/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/store/mod.rs
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
/target/aarch64-unknown-linux-gnu/release/libfliptengine.rlib: /project/flipt-engine-ffi/src/evaluator/mod.rs /project/flipt-engine-ffi/src/lib.rs /project/flipt-engine-ffi/src/parser/http.rs /project/flipt-engine-ffi/src/parser/mod.rs /project/flipt-evaluation/src/error/mod.rs /project/flipt-evaluation/src/lib.rs /project/flipt-evaluation/src/models/common.rs /project/flipt-evaluation/src/models/flipt.rs /project/flipt-evaluation/src/models/mod.rs /project/flipt-evaluation/src/models/source.rs /project/flipt-evaluation/src/parser/mod.rs /project/flipt-evaluation/src/store/mod.rs
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
/home/runner/work/flipt-client-sdks/flipt-client-sdks/target/x86_64-unknown-linux-gnu/release/libfliptengine.rlib: /home/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-engine-ffi/src/evaluator/mod.rs /home/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-engine-ffi/src/lib.rs /home/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-engine-ffi/src/parser/http.rs /home/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-engine-ffi/src/parser/mod.rs /home/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/error/mod.rs /home/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/lib.rs /home/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/models/common.rs /home/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/models/flipt.rs /home/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/models/mod.rs /home/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/models/source.rs /home/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/parser/mod.rs /home/runner/work/flipt-client-sdks/flipt-client-sdks/flipt-evaluation/src/store/mod.rs
|
Binary file
|