flipt_client 0.3.0 → 0.4.1

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: 9950fd63fded6faea31f9571eb54e5b5af3d0be5a452de37871432c6a1c2c4ee
4
- data.tar.gz: df2abf9e11373d0bae1fc2d56e246197977eb7c029185a2c2c96a33c7325dd80
3
+ metadata.gz: b215784ecdfee2e32670729baa30065fa62cb5a15892b771be440f23a59cf369
4
+ data.tar.gz: 3bf57a74117b84e369de9ebc02060c56ca3a4c1418e1a1ac103f98ec14d03918
5
5
  SHA512:
6
- metadata.gz: cd403f5d9a0d15d4450cbddb787e3660bf130ded83122a50de68bd448db8c053f8da948170ab9fff7027fad18640cbbfc280cb4017647c70980258238adb3ba0
7
- data.tar.gz: ae128e7881eea794d7629fc5400e75ad8c63c0114d38e61e57643400850accc59f6a15316e320f0f82136be76afee1c0da609b397baadaa1b6a762d25c28e27b
6
+ metadata.gz: 9c6a4f7da51c788a3162531ca0d71375f2c831c23577e8f6eb09a0b8bf937209f72e8310918b06a750b60cedf21b74cd41aae8e64a3c9b885d0778b23ffd737e
7
+ data.tar.gz: 124eac66ca2f98e1fd42fded512d6cf46bdc1e0d6b945ee45539c05eb6f4a0ca15e89f183bc8ae00fd9997fa3af84d7f018083323c6cc4019ade59b8c314ab89
Binary file
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * This function will initialize an Engine and return a pointer back to the caller.
10
10
  */
11
- void *initialize_engine(const char *const *namespaces, const char *opts);
11
+ void *initialize_engine(const char *namespace_, const char *opts);
12
12
 
13
13
  /**
14
14
  * # Safety
@@ -31,9 +31,24 @@ const char *evaluate_boolean(void *engine_ptr, const char *evaluation_request);
31
31
  */
32
32
  const char *evaluate_batch(void *engine_ptr, const char *batch_evaluation_request);
33
33
 
34
+ /**
35
+ * # Safety
36
+ *
37
+ * This function will take in a pointer to the engine and return a list of flags for the given namespace.
38
+ */
39
+ const char *list_flags(void *engine_ptr);
40
+
34
41
  /**
35
42
  * # Safety
36
43
  *
37
44
  * This function will free the memory occupied by the engine.
38
45
  */
39
46
  void destroy_engine(void *engine_ptr);
47
+
48
+ /**
49
+ * # Safety
50
+ *
51
+ * This function will take in a pointer to the string and free the memory.
52
+ * See Rust the safety section in CString::from_raw.
53
+ */
54
+ void destroy_string(char *ptr);
Binary file
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Flipt
4
- VERSION = '0.3.0'
4
+ VERSION = '0.4.1'
5
5
  end
data/lib/flipt_client.rb CHANGED
@@ -28,16 +28,20 @@ module Flipt
28
28
 
29
29
  ffi_lib File.expand_path(libfile, __dir__)
30
30
 
31
- # void *initialize_engine(const char *const *namespaces, const char *opts);
32
- attach_function :initialize_engine, %i[pointer string], :pointer
31
+ # void *initialize_engine(const char *namespace, const char *opts);
32
+ attach_function :initialize_engine, %i[string string], :pointer
33
33
  # void destroy_engine(void *engine_ptr);
34
34
  attach_function :destroy_engine, [:pointer], :void
35
35
  # const char *evaluate_variant(void *engine_ptr, const char *evaluation_request);
36
- attach_function :evaluate_variant, %i[pointer string], :string
36
+ attach_function :evaluate_variant, %i[pointer string], :strptr
37
37
  # const char *evaluate_boolean(void *engine_ptr, const char *evaluation_request);
38
- attach_function :evaluate_boolean, %i[pointer string], :string
38
+ attach_function :evaluate_boolean, %i[pointer string], :strptr
39
39
  # const char *evaluate_batch(void *engine_ptr, const char *batch_evaluation_request);
40
- attach_function :evaluate_batch, %i[pointer string], :string
40
+ attach_function :evaluate_batch, %i[pointer string], :strptr
41
+ # const char *list_flags(void *engine_ptr);
42
+ attach_function :list_flags, [:pointer], :strptr
43
+ # void destroy_string(const char *ptr);
44
+ attach_function :destroy_string, [:pointer], :void
41
45
 
42
46
  # Create a new Flipt client
43
47
  #
@@ -56,13 +60,7 @@ module Flipt
56
60
 
57
61
  opts[:authentication] = authentication.strategy
58
62
 
59
- namespace_list = [namespace]
60
- ns = FFI::MemoryPointer.new(:pointer, namespace_list.size)
61
- namespace_list.each_with_index do |namespace, i|
62
- ns[i].put_pointer(0, FFI::MemoryPointer.from_string(namespace))
63
- end
64
-
65
- @engine = self.class.initialize_engine(ns, opts.to_json)
63
+ @engine = self.class.initialize_engine(namespace, opts.to_json)
66
64
  ObjectSpace.define_finalizer(self, self.class.finalize(@engine))
67
65
  end
68
66
 
@@ -75,11 +73,10 @@ module Flipt
75
73
  # @param evaluation_request [Hash] evaluation request
76
74
  # @option evaluation_request [String] :entity_id entity id
77
75
  # @option evaluation_request [String] :flag_key flag key
78
- # @option evaluation_request [String] :namespace_key override namespace key
79
76
  def evaluate_variant(evaluation_request = {})
80
- evaluation_request[:namespace_key] = @namespace
81
77
  validate_evaluation_request(evaluation_request)
82
- resp = self.class.evaluate_variant(@engine, evaluation_request.to_json)
78
+ resp, ptr = self.class.evaluate_variant(@engine, evaluation_request.to_json)
79
+ ptr = FFI::AutoPointer.new(ptr, EvaluationClient.method(:destroy_string))
83
80
  JSON.parse(resp)
84
81
  end
85
82
 
@@ -88,27 +85,32 @@ module Flipt
88
85
  # @param evaluation_request [Hash] evaluation request
89
86
  # @option evaluation_request [String] :entity_id entity id
90
87
  # @option evaluation_request [String] :flag_key flag key
91
- # @option evaluation_request [String] :namespace_key override namespace key
92
88
  def evaluate_boolean(evaluation_request = {})
93
- evaluation_request[:namespace_key] = @namespace
94
89
  validate_evaluation_request(evaluation_request)
95
- resp = self.class.evaluate_boolean(@engine, evaluation_request.to_json)
90
+ resp, ptr = self.class.evaluate_boolean(@engine, evaluation_request.to_json)
91
+ ptr = FFI::AutoPointer.new(ptr, EvaluationClient.method(:destroy_string))
96
92
  JSON.parse(resp)
97
93
  end
98
-
94
+
99
95
  # Evaluate a batch of flags for a given request
100
96
  #
101
97
  # @param batch_evaluation_request [Array<Hash>] batch evaluation request
102
98
  # - :entity_id [String] entity id
103
99
  # - :flag_key [String] flag key
104
- # - :namespace_key [String] override namespace key
105
100
  def evaluate_batch(batch_evaluation_request = [])
106
101
  for request in batch_evaluation_request do
107
- request[:namespace_key] = @namespace
108
102
  validate_evaluation_request(request)
109
103
  end
110
104
 
111
- resp = self.class.evaluate_batch(@engine, batch_evaluation_request.to_json)
105
+ resp, ptr = self.class.evaluate_batch(@engine, batch_evaluation_request.to_json)
106
+ ptr = FFI::AutoPointer.new(ptr, EvaluationClient.method(:destroy_string))
107
+ JSON.parse(resp)
108
+ end
109
+
110
+ # List all flags in the namespace
111
+ def list_flags
112
+ resp, ptr = self.class.list_flags(@engine)
113
+ ptr = FFI::AutoPointer.new(ptr, EvaluationClient.method(:destroy_string))
112
114
  JSON.parse(resp)
113
115
  end
114
116
 
@@ -116,8 +118,6 @@ module Flipt
116
118
  def validate_evaluation_request(evaluation_request)
117
119
  if evaluation_request[:entity_id].nil? || evaluation_request[:entity_id].empty?
118
120
  raise ArgumentError, 'entity_id is required'
119
- elsif evaluation_request[:namespace_key].nil? || evaluation_request[:namespace_key].empty?
120
- raise ArgumentError, 'namespace_key is required'
121
121
  elsif evaluation_request[:flag_key].nil? || evaluation_request[:flag_key].empty?
122
122
  raise ArgumentError, 'flag_key is required'
123
123
  end
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.3.0
4
+ version: 0.4.1
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-02-25 00:00:00.000000000 Z
11
+ date: 2024-03-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Flipt Client Evaluation SDK
14
14
  email: