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

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

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ EventParser

Returns a new instance of EventParser.



7
8
9
# File 'lib/splitclient-rb/sse/event_source/event_parser.rb', line 7

def initialize(config)
  @config = config
end

Instance Method Details

#parse(raw_event) ⇒ Object



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

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.error("Error during parsing a event: #{e.inspect}")
  []
end