Class: SplitIoClient::SSE::EventSource::EventParser

Inherits:
Object
  • Object
show all
Defined in:
lib/splitclient-rb/sse/event_source/event_parser.rb

Constant Summary collapse

BAD_REQUEST_CODE =
400

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ EventParser

Returns a new instance of EventParser.



9
10
11
# File 'lib/splitclient-rb/sse/event_source/event_parser.rb', line 9

def initialize(config)
  @config = config
end

Instance Method Details

#first_event(raw_data) ⇒ Object



36
37
38
39
40
41
# File 'lib/splitclient-rb/sse/event_source/event_parser.rb', line 36

def first_event(raw_data)
  raw_data.split("\n")[0].split(' ')[1].to_i
rescue StandardError => e
  @config.logger.debug("Error parsing first event: #{e.inspect}")
  BAD_REQUEST_CODE
end

#parse(raw_event) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/splitclient-rb/sse/event_source/event_parser.rb', line 13

def parse(raw_event)
  type = nil
  events = []
  buffer = read_partial_data(raw_event)

  buffer.each do |d|
    splited_data = d.split(':')

    case splited_data[0]
    when 'event'
      type = splited_data[1].strip
    when 'data'
      data = parse_event_data(d, type)
      events << StreamData.new(type, data[:client_id], data[:data], data[:channel]) unless type.nil? || data[:data].nil?
    end
  end

  events
rescue StandardError => e
  @config.logger.debug("Error during parsing a event: #{e.inspect}")
  []
end