twitter-status-bot/.gems/gems/twitter-5.11.0/lib/twitter/streaming/response.rb

33 lines
734 B
Ruby

require 'buftok'
module Twitter
module Streaming
class Response
# Initializes a new Response object
#
# @return [Twitter::Streaming::Response]
def initialize(&block)
@block = block
@parser = Http::Parser.new(self)
@tokenizer = BufferedTokenizer.new("\r\n")
end
def <<(data)
@parser << data
end
def on_headers_complete(_headers)
error = Twitter::Error.errors[@parser.status_code]
fail error.new if error
end
def on_body(data)
@tokenizer.extract(data).each do |line|
next if line.empty?
@block.call(JSON.parse(line, :symbolize_names => true))
end
end
end
end
end