class MstdnIvory::Parser

This class parse stream data.

Public Class Methods

new(&block) click to toggle source
# File lib/mstdn_ivory/parser.rb, line 7
def initialize(&block)
  @parser = HTTP::Parser.new(self)
  @buffer = {}
  @block = block
end

Public Instance Methods

<<(body) click to toggle source
# File lib/mstdn_ivory/parser.rb, line 13
def <<(body)
  @parser << body
end
on_body(data) click to toggle source
# File lib/mstdn_ivory/parser.rb, line 17
def on_body(data)
  if (match_data = data.match(/event: ([a-z]+)/))
    @buffer[:type] = match_data[1].to_sym
  elsif (match_data = data.match(/data: (.+)/m))
    @buffer[:data] = Oj.load(match_data[1])

    if @buffer[:type]
      @block.call(@buffer[:type], @buffer[:data])
    else
      @buffer = {}
    end
  end
end