Skip to content

Commit 951c92a

Browse files
committed
fixing sse event parsing
1 parent 064f713 commit 951c92a

2 files changed

Lines changed: 13 additions & 1 deletion

File tree

lib/splitclient-rb/sse/event_source/event_parser.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ def first_event(raw_data)
4343
private
4444

4545
def parse_event_data(data, type)
46-
event_data = JSON.parse(data.sub('data: ', ''))
46+
data_value = data.sub('data:', '')
47+
event_data = JSON.parse(data_value.strip)
4748
client_id = event_data['clientId']&.strip
4849
channel = event_data['channel']&.strip
4950
parsed_data = JSON.parse(event_data['data']) unless type == 'error'

spec/sse/event_source/event_parser_spec.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
let(:log) { StringIO.new }
88
let(:config) { SplitIoClient::SplitConfig.new(logger: Logger.new(log)) }
99

10+
let(:event_split_update_ws) { "fb\r\nid: 123\nevent: message\ndata:{\"id\":\"1\",\"clientId\":\"emptyClientId\",\"connectionId\":\"1\",\"timestamp\":1582045421733,\"channel\":\"channel-test\",\"data\":\"{\\\"type\\\" : \\\"SPLIT_UPDATE\\\",\\\"changeNumber\\\": 5564531221}\",\"name\":\"asdasd\"}\n\n\r\n" }
1011
let(:event_split_update) { "fb\r\nid: 123\nevent: message\ndata: {\"id\":\"1\",\"clientId\":\"emptyClientId\",\"connectionId\":\"1\",\"timestamp\":1582045421733,\"channel\":\"channel-test\",\"data\":\"{\\\"type\\\" : \\\"SPLIT_UPDATE\\\",\\\"changeNumber\\\": 5564531221}\",\"name\":\"asdasd\"}\n\n\r\n" }
1112
let(:event_split_kill) { "fb\r\nid: 123\nevent: message\ndata: {\"id\":\"1\",\"clientId\":\"emptyClientId\",\"connectionId\":\"1\",\"timestamp\":1582045421733,\"channel\":\"channel-test\",\"data\":\"{\\\"type\\\" : \\\"SPLIT_KILL\\\",\\\"changeNumber\\\": 5564531221, \\\"defaultTreatment\\\" : \\\"off\\\", \\\"splitName\\\" : \\\"split-test\\\"}\",\"name\":\"asdasd\"}\n\n\r\n" }
1213
let(:event_segment_update) { "fb\r\nid: 123\nevent: message\ndata: {\"id\":\"1\",\"clientId\":\"emptyClientId\",\"connectionId\":\"1\",\"timestamp\":1582045421733,\"channel\":\"channel-test\",\"data\":\"{\\\"type\\\" : \\\"SEGMENT_UPDATE\\\",\\\"changeNumber\\\": 5564531221, \\\"segmentName\\\" : \\\"segment-test\\\"}\",\"name\":\"asdasd\"}\n\n\r\n" }
@@ -25,6 +26,16 @@
2526
expect(event.channel).to eq('channel-test')
2627
end
2728

29+
it 'split update event - fixing event parser' do
30+
parser = subject.new(config)
31+
32+
event = parser.parse(event_split_update_ws)[0]
33+
expect(event.event_type).to eq('message')
34+
expect(event.data['type']).to eq('SPLIT_UPDATE')
35+
expect(event.data['changeNumber']).to eq(5_564_531_221)
36+
expect(event.channel).to eq('channel-test')
37+
end
38+
2839
it 'split kill event' do
2940
parser = subject.new(config)
3041

0 commit comments

Comments
 (0)