yggdrasil-engine 1.0.4-universal-java-11 → 1.1.0-universal-java-11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 443921589a1955f5541a77589a217e7feadc9cc308e698830136c28cfb9a64c5
4
- data.tar.gz: 9950ed81cb5e21cb2306f702a4963ac7d085360fc8815466024c5e84de2a1ec8
3
+ metadata.gz: 3d637290ecfaf9eaf06ce3f012237db008949d79f9f23c5f97284e9120c8a0bb
4
+ data.tar.gz: ea50e3d8aabda9ef2a58136989e5833216c40a3c87867bfceb380f580354e18e
5
5
  SHA512:
6
- metadata.gz: f8daece593166f7ba2ca1c50a543ec7504d34e6bf2d9bb386c362af0ff778f5ba6094d28f66745cf9f81f5f4dcf65b368f87d374691a45da2896a63c61918c6e
7
- data.tar.gz: 6c5e3014398e429b958b50d8536d9fe5bcff81d8a9dbe6274c1a8420a79192e1946df7fa1d34dc7ac158de260383904c81f73ed1899a82cd358c7b7ef998beaa
6
+ metadata.gz: 69a38f65a703151ff7dd158c43669ec12b76c12249991c91c1f191e999022917945d8f3895249ef237e71bdf3bef853f1b351379f9c4f3656b936eb899c4cf77
7
+ data.tar.gz: 1949c013867dbb6c99fc1aa277215b998870efc4f4d48c1314b4708e8eaf38b844cb5640e67cde71cfa4accdd41098acefd898ce5f432c8f055f6b418c119cbe
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -58,6 +58,7 @@ class YggdrasilEngine
58
58
  attach_function :free_engine, [:pointer], :void
59
59
 
60
60
  attach_function :take_state, %i[pointer string], :pointer
61
+ attach_function :get_state, [:pointer], :pointer
61
62
  attach_function :check_enabled, %i[pointer string string string], :pointer
62
63
  attach_function :check_variant, %i[pointer string string string], :pointer
63
64
  attach_function :get_metrics, [:pointer], :pointer
@@ -85,6 +86,20 @@ class YggdrasilEngine
85
86
  YggdrasilEngine.free_response(response_ptr)
86
87
  end
87
88
 
89
+ def get_state
90
+ response_ptr = YggdrasilEngine.get_state(@engine)
91
+ begin
92
+ response_json = response_ptr.read_string
93
+ response = JSON.parse(response_json, symbolize_names: true)
94
+
95
+ raise "Error: #{response[:error_message]}" if response[:status_code] == ERROR_RESPONSE
96
+
97
+ response[:value].to_json
98
+ ensure
99
+ YggdrasilEngine.free_response(response_ptr)
100
+ end
101
+ end
102
+
88
103
  def get_variant(name, context)
89
104
  context_json = (context || {}).to_json
90
105
  custom_strategy_results = @custom_strategy_handler.evaluate_custom_strategies(name, context).to_json
Binary file
Binary file
@@ -25,6 +25,27 @@ RSpec.describe YggdrasilEngine do
25
25
  end
26
26
  end
27
27
 
28
+ describe '#getting state' do
29
+ it 'should return JSON string of state value (not wrapped response) and support roundtrip' do
30
+ empty_state = yggdrasil_engine.get_state
31
+
32
+ expect(empty_state).to include('"features":[]')
33
+ expect(empty_state).not_to include('status_code')
34
+ expect(empty_state).not_to include('error_message')
35
+
36
+ test_state = '{"version":1,"features":[{"name":"testFeature","enabled":true,"strategies":[{"name":"default"}]}]}'
37
+ yggdrasil_engine.take_state(test_state)
38
+ retrieved_state = yggdrasil_engine.get_state
39
+
40
+ expect(retrieved_state).to include('testFeature')
41
+ expect(retrieved_state).to include('"version":1')
42
+ expect(retrieved_state).to include('"name":"testFeature"')
43
+ expect(retrieved_state).to include('"name":"default"')
44
+ expect(retrieved_state).not_to include('status_code')
45
+ expect(retrieved_state).not_to include('error_message')
46
+ end
47
+ end
48
+
28
49
  describe '#metrics' do
29
50
  it 'should clear metrics when get_metrics is called' do
30
51
  feature_name = 'Feature.A'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yggdrasil-engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.1.0
5
5
  platform: universal-java-11
6
6
  authors:
7
7
  - Unleash
@@ -47,7 +47,7 @@ homepage: http://github.com/username/my_gem
47
47
  licenses:
48
48
  - MIT
49
49
  metadata:
50
- yggdrasil_core_version: 0.17.0
50
+ yggdrasil_core_version: 0.18.1
51
51
  post_install_message:
52
52
  rdoc_options: []
53
53
  require_paths: