pioneer_ruby_sdk 1.0.0 → 1.0.1
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 +4 -4
- data/lib/client_with_context.rb +2 -2
- data/lib/event_source_client.rb +16 -23
- data/lib/feature_state.rb +1 -0
- data/lib/mod/handle_undefined_feature.rb +9 -0
- data/lib/pioneer_ruby_sdk.rb +8 -4
- metadata +5 -4
- data/lib/helper_methods/handle_undefined_feature.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e95e45596e7e7c90a6e718e412191ea4868cfc700b4481116bcb26470ebb4418
|
4
|
+
data.tar.gz: 1dc70bede8bf710de8acce3400e441cc5da366113f90380296569c4da79a6330
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6574f8de533d0c54004c0977d233297017a822059f8793c6b9a1560209ea2d519a9ce7102685527c99ff7b665c15b0b876164a6919b4bee38ca4683f73370665
|
7
|
+
data.tar.gz: ea4379f0f47571dcc88dfc4d2dfd1f872882321bcab7f9580d76ddfc2ecd6ad24483f4af409328190b0a82b64395100fdca6709900e57d64b281954cf8a08732
|
data/lib/client_with_context.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'mod/handle_undefined_feature.rb'
|
2
2
|
|
3
3
|
class Client_With_Context
|
4
4
|
def initialize(context_obj)
|
@@ -10,7 +10,7 @@ class Client_With_Context
|
|
10
10
|
def get_feature(key, default_value)
|
11
11
|
feature_state = @client.get_feature_state(key)
|
12
12
|
if !feature_state
|
13
|
-
return
|
13
|
+
return HandleUndefinedFeature.handle(key, default_value)
|
14
14
|
end
|
15
15
|
|
16
16
|
return feature_state.strategy.calculate(@context)
|
data/lib/event_source_client.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'ld-eventsource'
|
2
2
|
require 'json'
|
3
3
|
require_relative 'feature_state'
|
4
|
-
require_relative '
|
4
|
+
require_relative 'mod/handle_undefined_feature'
|
5
5
|
|
6
6
|
# class for event source client instance
|
7
7
|
class Event_Source_Client
|
@@ -15,7 +15,8 @@ class Event_Source_Client
|
|
15
15
|
headers: { Authorization: @config[:sdk_key]}
|
16
16
|
}
|
17
17
|
|
18
|
-
|
18
|
+
# this needs to make use of the constant based uri, not hardcoded
|
19
|
+
sse_client = SSE::Client.new(@config[:server_address], headers: options[:headers])
|
19
20
|
|
20
21
|
@api_client = sse_client
|
21
22
|
end
|
@@ -26,20 +27,13 @@ class Event_Source_Client
|
|
26
27
|
end
|
27
28
|
|
28
29
|
def handle_events
|
29
|
-
event_type = nil
|
30
|
-
|
31
30
|
@api_client.on_event do |event|
|
32
31
|
data = JSON.parse(event[:data])
|
33
|
-
event_type = data[
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
case event_type
|
39
|
-
when "ALL_FEATURES"
|
40
|
-
handle_all_features(payload)
|
41
|
-
when "CREATE_CONNECTION"
|
42
|
-
return
|
32
|
+
event_type = data['eventType']
|
33
|
+
if event_type == "ALL_FEATURES"
|
34
|
+
payload = data['payload']
|
35
|
+
handle_all_features(payload)
|
36
|
+
end
|
43
37
|
end
|
44
38
|
end
|
45
39
|
|
@@ -56,11 +50,11 @@ class Event_Source_Client
|
|
56
50
|
|
57
51
|
all_features.each do |feature|
|
58
52
|
modified_feature_state_params = {
|
59
|
-
title: feature[
|
60
|
-
value: feature[
|
61
|
-
strategy: {percentage: feature[
|
53
|
+
title: feature['title'],
|
54
|
+
value: feature['is_active'],
|
55
|
+
strategy: {percentage: feature['rollout']}
|
62
56
|
}
|
63
|
-
feature_states[feature[
|
57
|
+
feature_states[feature['title']] = FeatureState.new(modified_feature_state_params)
|
64
58
|
end
|
65
59
|
|
66
60
|
@features = feature_states
|
@@ -69,17 +63,16 @@ class Event_Source_Client
|
|
69
63
|
|
70
64
|
def get_feature(key, default_value)
|
71
65
|
feature_state = get_feature_state(key)
|
72
|
-
if
|
73
|
-
|
66
|
+
if feature_state.nil?
|
67
|
+
HandleUndefinedFeature.handle(key, default_value)
|
74
68
|
return
|
75
69
|
end
|
76
70
|
|
77
|
-
|
78
|
-
return value
|
71
|
+
feature_state.value
|
79
72
|
end
|
80
73
|
|
81
74
|
|
82
75
|
def get_feature_state(key)
|
83
|
-
return @features[
|
76
|
+
return @features[key]
|
84
77
|
end
|
85
78
|
end
|
data/lib/feature_state.rb
CHANGED
@@ -0,0 +1,9 @@
|
|
1
|
+
module HandleUndefinedFeature
|
2
|
+
def self.handle(key, default_value)
|
3
|
+
unless default_value.nil?
|
4
|
+
puts("Warning: Could not get #{key} from features, using provided default value!")
|
5
|
+
return default_value
|
6
|
+
end
|
7
|
+
raise("Error: #{key} does not exist, cannot get get feature!");
|
8
|
+
end
|
9
|
+
end
|
data/lib/pioneer_ruby_sdk.rb
CHANGED
@@ -13,9 +13,9 @@ class Pioneer_Ruby_Sdk
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def connect()
|
16
|
-
|
17
|
-
@client.start
|
18
|
-
|
16
|
+
@client = Event_Source_Client.new(@configs)
|
17
|
+
@client.start
|
18
|
+
self
|
19
19
|
end
|
20
20
|
|
21
21
|
def with_wait_for_data(time_out = 1, polling_attempts = 5)
|
@@ -47,4 +47,8 @@ class Pioneer_Ruby_Sdk
|
|
47
47
|
def get_server_address()
|
48
48
|
return @server_address
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
|
+
def get_feature(key, default_value)
|
52
|
+
@client.get_feature(key, default_value)
|
53
|
+
end
|
54
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pioneer_ruby_sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jimmy Zheng
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2021-07-
|
14
|
+
date: 2021-07-21 00:00:00.000000000 Z
|
15
15
|
dependencies: []
|
16
16
|
description:
|
17
17
|
email:
|
@@ -23,11 +23,12 @@ files:
|
|
23
23
|
- lib/context.rb
|
24
24
|
- lib/event_source_client.rb
|
25
25
|
- lib/feature_state.rb
|
26
|
-
- lib/
|
26
|
+
- lib/mod/handle_undefined_feature.rb
|
27
27
|
- lib/pioneer_ruby_sdk.rb
|
28
28
|
- lib/strategy.rb
|
29
29
|
homepage:
|
30
|
-
licenses:
|
30
|
+
licenses:
|
31
|
+
- MIT
|
31
32
|
metadata: {}
|
32
33
|
post_install_message:
|
33
34
|
rdoc_options: []
|