flipt_client 0.5.0 → 0.7.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 +22 -13
- data/flipt-client-ruby.gemspec +1 -1
- data/lib/ext/darwin_arm64/libfliptengine.dylib +0 -0
- data/lib/ext/darwin_arm64/libfliptengine.rlib +0 -0
- data/lib/ext/darwin_x86_64/libfliptengine.d +1 -0
- data/lib/ext/darwin_x86_64/libfliptengine.dylib +0 -0
- data/lib/ext/darwin_x86_64/libfliptengine.rlib +0 -0
- data/lib/ext/linux_arm64/libfliptengine.rlib +0 -0
- data/lib/ext/linux_arm64/libfliptengine.so +0 -0
- data/lib/ext/linux_x86_64/libfliptengine.rlib +0 -0
- data/lib/ext/linux_x86_64/libfliptengine.so +0 -0
- data/lib/flipt_client/models.rb +7 -3
- data/lib/flipt_client/version.rb +1 -1
- data/lib/flipt_client.rb +10 -3
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e6d2ba2cc57cac3446b5df105f61a2f1e15ca6bcbbcdfa7306c821f2c562fc5
|
4
|
+
data.tar.gz: 84ec8fa11e6910cbfc5fe50394806190c279be2f32587d7105d16687192fac93
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6b740a30f15d192a44d4ecf59bd682bdf6097b3260ec5d223c20f3cee4d4a3d5f6e812f705a5f53b03d0d9f9d872e48d520f7d4738f10ec23bb3398a534d641d
|
7
|
+
data.tar.gz: af4e1d93cc2b070488a9f5120f3cfe4ef4bff8bfdac29261b3e4b9ad84767efc9edcb6c42afeafe30049cbd0b971f1a82d912cc1e8ba9fd6b50a53c5c877707f
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/flipt_client.svg)](https://badge.fury.io/rb/flipt_client)
|
4
4
|
|
5
|
-
The `flipt-client-ruby`
|
5
|
+
The `flipt-client-ruby` library contains the Ruby source code for the Flipt [client-side evaluation](https://www.flipt.io/docs/integration/client) client.
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
@@ -10,7 +10,16 @@ The `flipt-client-ruby` directory contains the Ruby source code for the Flipt [c
|
|
10
10
|
gem install flipt_client
|
11
11
|
```
|
12
12
|
|
13
|
-
##
|
13
|
+
## Supported Architectures
|
14
|
+
|
15
|
+
This SDK currently supports the following OSes/architectures:
|
16
|
+
|
17
|
+
- Linux x86_64
|
18
|
+
- Linux arm64
|
19
|
+
- MacOS x86_64
|
20
|
+
- MacOS arm64
|
21
|
+
|
22
|
+
### Using System Libffi
|
14
23
|
|
15
24
|
If you are experiencing segfaults when using this gem, you may need to configure `ffi` to use the system libffi instead of the bundled one.
|
16
25
|
|
@@ -34,10 +43,10 @@ require 'flipt_client'
|
|
34
43
|
# "url": "http://localhost:8080",
|
35
44
|
# "update_interval": 120,
|
36
45
|
# "authentication": {
|
37
|
-
# "client_token": "secret"
|
46
|
+
# "client_token": "secret"
|
38
47
|
# }
|
39
48
|
# }
|
40
|
-
#
|
49
|
+
#
|
41
50
|
# You can replace the url with where your upstream Flipt instance points to, the update interval for how long you are willing
|
42
51
|
# to wait for updated flag state, and the auth token if your Flipt instance requires it.
|
43
52
|
client = Flipt::EvaluationClient.new()
|
@@ -50,17 +59,17 @@ puts resp
|
|
50
59
|
|
51
60
|
1. To run the load test, you'll need to have Flipt running locally. You can do this by running the following command from the root of the repository:
|
52
61
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
62
|
+
```bash
|
63
|
+
docker run -d \
|
64
|
+
-p 8080:8080 \
|
65
|
+
-p 9000:9000 \
|
66
|
+
docker.flipt.io/flipt/flipt:latest
|
67
|
+
```
|
59
68
|
|
60
69
|
2. You'll also need to have the `flipt_client` gem installed locally. See [Installation](#installation) above.
|
61
70
|
3. In the Flipt UI (<http://localhost:8080>) you'll also need to create a new boolean flag with the key `my-feature` in the default namespace.
|
62
71
|
4. You can then run the load test by running the following command from this folder:
|
63
72
|
|
64
|
-
|
65
|
-
|
66
|
-
|
73
|
+
```bash
|
74
|
+
bundle exec ruby load_test.rb
|
75
|
+
```
|
data/flipt-client-ruby.gemspec
CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
|
|
16
16
|
# spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
|
17
17
|
|
18
18
|
spec.metadata['homepage_uri'] = spec.homepage
|
19
|
-
spec.metadata[
|
19
|
+
spec.metadata['source_code_uri'] = 'https://github.com/flipt-io/flipt-client-sdks'
|
20
20
|
|
21
21
|
spec.files = Dir.glob('{lib}/**/*') + ['README.md', 'flipt-client-ruby.gemspec']
|
22
22
|
spec.bindir = 'exe'
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
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
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/flipt_client/models.rb
CHANGED
@@ -1,21 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Flipt
|
4
|
+
# AuthenticationStrategy is a base class for different authentication strategies
|
4
5
|
class AuthenticationStrategy
|
5
6
|
def strategy
|
6
|
-
|
7
|
+
raise NotImplementedError
|
7
8
|
end
|
8
9
|
end
|
9
10
|
|
11
|
+
# NoAuthentication is a strategy that does not require authentication
|
10
12
|
class NoAuthentication < AuthenticationStrategy
|
11
13
|
def strategy
|
12
14
|
nil
|
13
15
|
end
|
14
16
|
end
|
15
17
|
|
18
|
+
# ClientTokenAuthentication is a strategy that uses a client token for authentication
|
16
19
|
class ClientTokenAuthentication < AuthenticationStrategy
|
17
20
|
def initialize(token)
|
18
|
-
|
21
|
+
@token = token
|
19
22
|
end
|
20
23
|
|
21
24
|
def strategy
|
@@ -25,6 +28,7 @@ module Flipt
|
|
25
28
|
end
|
26
29
|
end
|
27
30
|
|
31
|
+
# JWTAuthentication is a strategy that uses a JWT token for authentication
|
28
32
|
class JWTAuthentication < AuthenticationStrategy
|
29
33
|
def initialize(token)
|
30
34
|
@token = token
|
@@ -36,4 +40,4 @@ module Flipt
|
|
36
40
|
}
|
37
41
|
end
|
38
42
|
end
|
39
|
-
end
|
43
|
+
end
|
data/lib/flipt_client/version.rb
CHANGED
data/lib/flipt_client.rb
CHANGED
@@ -8,6 +8,7 @@ require 'json'
|
|
8
8
|
module Flipt
|
9
9
|
class Error < StandardError; end
|
10
10
|
|
11
|
+
# EvaluationClient is a Ruby Client Side Evaluation Library for Flipt
|
11
12
|
class EvaluationClient
|
12
13
|
extend FFI::Library
|
13
14
|
|
@@ -17,6 +18,8 @@ module Flipt
|
|
17
18
|
case RbConfig::CONFIG['arch']
|
18
19
|
when /arm64-darwin/
|
19
20
|
"ext/darwin_arm64/#{FLIPTENGINE}.dylib"
|
21
|
+
when /x86_64-darwin/
|
22
|
+
"ext/darwin_x86_64/#{FLIPTENGINE}.dylib"
|
20
23
|
when /arm64-linux|aarch64-linux/
|
21
24
|
"ext/linux_arm64/#{FLIPTENGINE}.so"
|
22
25
|
when /x86_64-linux/
|
@@ -55,8 +58,11 @@ module Flipt
|
|
55
58
|
@namespace = namespace
|
56
59
|
|
57
60
|
# set default no auth if not provided
|
58
|
-
authentication = opts.fetch(:authentication,
|
59
|
-
|
61
|
+
authentication = opts.fetch(:authentication, NoAuthentication.new)
|
62
|
+
unless authentication.is_a?(AuthenticationStrategy)
|
63
|
+
raise ArgumentError,
|
64
|
+
'invalid authentication strategy'
|
65
|
+
end
|
60
66
|
|
61
67
|
opts[:authentication] = authentication.strategy
|
62
68
|
|
@@ -98,7 +104,7 @@ module Flipt
|
|
98
104
|
# - :entity_id [String] entity id
|
99
105
|
# - :flag_key [String] flag key
|
100
106
|
def evaluate_batch(batch_evaluation_request = [])
|
101
|
-
|
107
|
+
batch_evaluation_request.each do |request|
|
102
108
|
validate_evaluation_request(request)
|
103
109
|
end
|
104
110
|
|
@@ -115,6 +121,7 @@ module Flipt
|
|
115
121
|
end
|
116
122
|
|
117
123
|
private
|
124
|
+
|
118
125
|
def validate_evaluation_request(evaluation_request)
|
119
126
|
if evaluation_request[:entity_id].nil? || evaluation_request[:entity_id].empty?
|
120
127
|
raise ArgumentError, 'entity_id is required'
|
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.7.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-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Flipt Client Evaluation SDK
|
14
14
|
email:
|
@@ -22,6 +22,9 @@ files:
|
|
22
22
|
- lib/ext/darwin_arm64/libfliptengine.d
|
23
23
|
- lib/ext/darwin_arm64/libfliptengine.dylib
|
24
24
|
- lib/ext/darwin_arm64/libfliptengine.rlib
|
25
|
+
- lib/ext/darwin_x86_64/libfliptengine.d
|
26
|
+
- lib/ext/darwin_x86_64/libfliptengine.dylib
|
27
|
+
- lib/ext/darwin_x86_64/libfliptengine.rlib
|
25
28
|
- lib/ext/flipt_engine.h
|
26
29
|
- lib/ext/linux_arm64/libfliptengine.d
|
27
30
|
- lib/ext/linux_arm64/libfliptengine.rlib
|