sdk-reforge 1.10.0 → 1.11.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/CHANGELOG.md +5 -0
- data/VERSION +1 -1
- data/lib/reforge/sse_config_client.rb +7 -2
- data/sdk-reforge.gemspec +3 -3
- data/test/test_sse_config_client.rb +37 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 035df48e2bfb88f49415f5bac3cc8472c1941d7aa75b2d5adeaaa9b181249566
|
4
|
+
data.tar.gz: 40bcb2f2d07df80308082a732852a1f3c3aca0a6e978d0fe80c022a7cd030c79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bcea0460ea869dfc1f82563c531425d63191a929dab7558d47093802a03d7d07e752c7750b308848c64e9facc1e8e6afcbff53748585604bbc5e77f72432ae14
|
7
|
+
data.tar.gz: 381cae539cebf7e540af04be3d332c20af0256d27b42cabbab7698297f4a96e1d56dc3f3aae99aba50636b80ba323f2d2327cdcf7ab87cce27a30f6394f09925
|
data/CHANGELOG.md
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.11.1
|
@@ -72,6 +72,7 @@ module Reforge
|
|
72
72
|
headers: headers,
|
73
73
|
read_timeout: @options.sse_read_timeout,
|
74
74
|
reconnect_time: @options.sse_default_reconnect_time,
|
75
|
+
last_event_id: (@config_loader.highwater_mark&.positive? ? @config_loader.highwater_mark.to_s : nil),
|
75
76
|
logger: Reforge::InternalLogger.new(SSE::Client)) do |client|
|
76
77
|
client.on_event do |event|
|
77
78
|
if event.data.nil? || event.data.empty?
|
@@ -92,7 +93,12 @@ module Reforge
|
|
92
93
|
end
|
93
94
|
|
94
95
|
client.on_error do |error|
|
95
|
-
|
96
|
+
# SSL "unexpected eof" is expected when SSE sessions timeout normally
|
97
|
+
if error.is_a?(OpenSSL::SSL::SSLError) && error.message.include?('unexpected eof')
|
98
|
+
@logger.debug "SSE Streaming: Connection closed (expected timeout) for url #{url}"
|
99
|
+
else
|
100
|
+
@logger.error "SSE Streaming Error: #{error.inspect} for url #{url}"
|
101
|
+
end
|
96
102
|
|
97
103
|
if @options.errors_to_close_connection.any? { |klass| error.is_a?(klass) }
|
98
104
|
@logger.debug "Closing SSE connection for url #{url}"
|
@@ -106,7 +112,6 @@ module Reforge
|
|
106
112
|
auth = "#{AUTH_USER}:#{@prefab_options.sdk_key}"
|
107
113
|
auth_string = Base64.strict_encode64(auth)
|
108
114
|
return {
|
109
|
-
'Last-Event-ID' => @config_loader.highwater_mark,
|
110
115
|
'Authorization' => "Basic #{auth_string}",
|
111
116
|
'Accept' => 'text/event-stream',
|
112
117
|
'X-Reforge-SDK-Version' => "sdk-ruby-#{Reforge::VERSION}"
|
data/sdk-reforge.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: sdk-reforge 1.
|
5
|
+
# stub: sdk-reforge 1.11.1 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "sdk-reforge".freeze
|
9
|
-
s.version = "1.
|
9
|
+
s.version = "1.11.1"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Jeff Dwyer".freeze]
|
14
|
-
s.date = "2025-10-
|
14
|
+
s.date = "2025-10-06"
|
15
15
|
s.description = "Feature Flags, Live Config as a service".freeze
|
16
16
|
s.email = "jeff.dwyer@reforge.com.cloud".freeze
|
17
17
|
s.extra_rdoc_files = [
|
@@ -16,7 +16,6 @@ class TestSSEConfigClient < Minitest::Test
|
|
16
16
|
|
17
17
|
client = Reforge::SSEConfigClient.new(options, config_loader)
|
18
18
|
|
19
|
-
assert_equal 4, client.headers['Last-Event-ID']
|
20
19
|
assert_equal "https://stream.goatsofreforge.com", client.source
|
21
20
|
|
22
21
|
result = nil
|
@@ -48,8 +47,6 @@ class TestSSEConfigClient < Minitest::Test
|
|
48
47
|
|
49
48
|
client = Reforge::SSEConfigClient.new(prefab_options, config_loader, sse_options)
|
50
49
|
|
51
|
-
assert_equal 4, client.headers['Last-Event-ID']
|
52
|
-
|
53
50
|
result = nil
|
54
51
|
|
55
52
|
# fake our load_configs block
|
@@ -247,4 +244,41 @@ class TestSSEConfigClient < Minitest::Test
|
|
247
244
|
'Expected to have logged an error about empty data for nil'
|
248
245
|
mock_client.verify
|
249
246
|
end
|
247
|
+
|
248
|
+
def test_last_event_id_initialization
|
249
|
+
# Test with positive highwater_mark
|
250
|
+
config_loader = OpenStruct.new(highwater_mark: 42)
|
251
|
+
prefab_options = OpenStruct.new(sse_sources: ['http://localhost:4567'], sdk_key: 'test')
|
252
|
+
client = Reforge::SSEConfigClient.new(prefab_options, config_loader)
|
253
|
+
|
254
|
+
# Mock SSE::Client.new to capture the last_event_id argument
|
255
|
+
SSE::Client.stub :new, ->(*args, **kwargs, &block) {
|
256
|
+
assert_equal '42', kwargs[:last_event_id], 'Expected last_event_id to be "42"'
|
257
|
+
OpenStruct.new(closed?: false, close: nil)
|
258
|
+
} do
|
259
|
+
client.connect { |_configs, _event, _source| }
|
260
|
+
end
|
261
|
+
|
262
|
+
# Test with nil highwater_mark
|
263
|
+
config_loader = OpenStruct.new(highwater_mark: nil)
|
264
|
+
client = Reforge::SSEConfigClient.new(prefab_options, config_loader)
|
265
|
+
|
266
|
+
SSE::Client.stub :new, ->(*args, **kwargs, &block) {
|
267
|
+
assert_nil kwargs[:last_event_id], 'Expected last_event_id to be nil when highwater_mark is nil'
|
268
|
+
OpenStruct.new(closed?: false, close: nil)
|
269
|
+
} do
|
270
|
+
client.connect { |_configs, _event, _source| }
|
271
|
+
end
|
272
|
+
|
273
|
+
# Test with zero highwater_mark
|
274
|
+
config_loader = OpenStruct.new(highwater_mark: 0)
|
275
|
+
client = Reforge::SSEConfigClient.new(prefab_options, config_loader)
|
276
|
+
|
277
|
+
SSE::Client.stub :new, ->(*args, **kwargs, &block) {
|
278
|
+
assert_nil kwargs[:last_event_id], 'Expected last_event_id to be nil when highwater_mark is 0'
|
279
|
+
OpenStruct.new(closed?: false, close: nil)
|
280
|
+
} do
|
281
|
+
client.connect { |_configs, _event, _source| }
|
282
|
+
end
|
283
|
+
end
|
250
284
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sdk-reforge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Dwyer
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-10-
|
10
|
+
date: 2025-10-06 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: concurrent-ruby
|