pioneer_ruby_sdk 1.0.0 → 1.0.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: e909be278c86086ed47667127df968e8b75e1dc639dd718a1344b11e5ba96334
4
- data.tar.gz: a88077557732acb48a49354805fe4d08d2f2ea0ba4db82ca8771bd8c465b6672
3
+ metadata.gz: e95e45596e7e7c90a6e718e412191ea4868cfc700b4481116bcb26470ebb4418
4
+ data.tar.gz: 1dc70bede8bf710de8acce3400e441cc5da366113f90380296569c4da79a6330
5
5
  SHA512:
6
- metadata.gz: c31dfe2719112b871537b9b9e9649ce2b22775561bfe98964f123ab2014db724782433362075b7fb67089a730c7c4dc9813d0ef04bc1dda8f9b564b8b57c63bc
7
- data.tar.gz: 8347f79aa3645304ebd8f1748787704e833330968e083972fb8541e38d3b8e72361f204d83c805a56f03cb92ea2bfa364c47b841012b9add596d836dc95f1a8d
6
+ metadata.gz: 6574f8de533d0c54004c0977d233297017a822059f8793c6b9a1560209ea2d519a9ce7102685527c99ff7b665c15b0b876164a6919b4bee38ca4683f73370665
7
+ data.tar.gz: ea4379f0f47571dcc88dfc4d2dfd1f872882321bcab7f9580d76ddfc2ecd6ad24483f4af409328190b0a82b64395100fdca6709900e57d64b281954cf8a08732
@@ -1,4 +1,4 @@
1
- require_relative 'helper_methods/handle_undefined_feature.rb'
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 handle_undefined_feature(key, default_value)
13
+ return HandleUndefinedFeature.handle(key, default_value)
14
14
  end
15
15
 
16
16
  return feature_state.strategy.calculate(@context)
@@ -1,7 +1,7 @@
1
1
  require 'ld-eventsource'
2
2
  require 'json'
3
3
  require_relative 'feature_state'
4
- require_relative 'helper_methods/handle_undefined_feature'
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
- sse_client = SSE::Client.new("localhost:3030/features", headers: options[:headers])
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[:type]
34
- payload = data[:data]
35
- end
36
-
37
- puts event_type
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[:title],
60
- value: feature[:is_active],
61
- strategy: {percentage: feature[:rollout]}
53
+ title: feature['title'],
54
+ value: feature['is_active'],
55
+ strategy: {percentage: feature['rollout']}
62
56
  }
63
- feature_states[feature[:title]] = FeatureState.new(modified_feature_state_params)
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 !feature_state
73
- handle_undefined_feature(key, default_value)
66
+ if feature_state.nil?
67
+ HandleUndefinedFeature.handle(key, default_value)
74
68
  return
75
69
  end
76
70
 
77
- value = feature_state[:value]
78
- return value
71
+ feature_state.value
79
72
  end
80
73
 
81
74
 
82
75
  def get_feature_state(key)
83
- return @features[:key]
76
+ return @features[key]
84
77
  end
85
78
  end
data/lib/feature_state.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require_relative 'strategy'
2
2
 
3
3
  class FeatureState
4
+ attr_reader :value
4
5
  def initialize(feature_state_object)
5
6
  @title = feature_state_object[:title],
6
7
  @value = feature_state_object[:value],
@@ -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
@@ -13,9 +13,9 @@ class Pioneer_Ruby_Sdk
13
13
  end
14
14
 
15
15
  def connect()
16
- @client = Event_Source_Client.new(@configs)
17
- @client.start()
18
- return self
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
- end
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.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-19 00:00:00.000000000 Z
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/helper_methods/handle_undefined_feature.rb
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: []
@@ -1,7 +0,0 @@
1
- def handle_undefined_feature(key, default_value)
2
- if !default_value.nil?
3
- puts("Warning: Could not get #{key} from features, using provided default value!")
4
- return default_value
5
- end
6
- raise("Error: #{key} does not exist, cannot get get feature!");
7
- end