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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bab21f5cabb52c6b86a37148513ebc29840ac42fb7d8ce8430bfd24aeb15554f
4
- data.tar.gz: e9bcc909c69d96b8a0eaeb1a328f680a1ac59dc8d0aac213f966e92bad01cab7
3
+ metadata.gz: 3e6d2ba2cc57cac3446b5df105f61a2f1e15ca6bcbbcdfa7306c821f2c562fc5
4
+ data.tar.gz: 84ec8fa11e6910cbfc5fe50394806190c279be2f32587d7105d16687192fac93
5
5
  SHA512:
6
- metadata.gz: 9cec3ef4bc12b647dc779a925f940c9e90d1a14af7bf13b15f2c01d3de9e9920e81846cea5de2e6f819f63aa41d4e7e98c5cd10a547a65db58d3166b615cb3b2
7
- data.tar.gz: 47751c409223146b2de9586171c30e8859f548004a361962e822d006f4404fecafa99889c277dbe6752a75cfb7fb085e2c7cb5699a55963075bac5b55076daf8
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` directory contains the Ruby source code for the Flipt [client-side evaluation](https://www.flipt.io/docs/integration/client) client.
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
- ## Using System Libffi
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
- ```bash
54
- docker run -d \
55
- -p 8080:8080 \
56
- -p 9000:9000 \
57
- docker.flipt.io/flipt/flipt:latest
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
- ```bash
65
- bundle exec ruby load_test.rb
66
- ```
73
+ ```bash
74
+ bundle exec ruby load_test.rb
75
+ ```
@@ -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["source_code_uri"] = "https://github.com/flipt-io/flipt-client-sdks"
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'
@@ -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
@@ -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
- raise NotImplementedError
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
- @token = token
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Flipt
4
- VERSION = '0.5.0'
4
+ VERSION = '0.7.0'
5
5
  end
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, Flipt::NoAuthentication.new)
59
- raise ArgumentError, "invalid authentication strategy" unless authentication && authentication.is_a?(Flipt::AuthenticationStrategy)
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
- for request in batch_evaluation_request do
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.5.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-03-29 00:00:00.000000000 Z
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