summaryrefslogtreecommitdiff
path: root/lib/tapicero/json_stream.rb
blob: d906ce20519cb0b684757627c14a5c2992f7c76f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
require 'net/http'
require 'uri'
require 'yajl'


# Since Yajl HTTP Stream will go a way in version 2.0 here's a simple substitude.
module Tapicero
  class JsonStream

    def self.get(url, options, &block)
      uri = URI(url)
      parser = Yajl::Parser.new(options)
      parser.on_parse_complete = block
      Net::HTTP.start(uri.host, uri.port) do |http|
        request = Net::HTTP::Get.new uri.request_uri


        http.request request do |response|
          response.read_body do |chunk|
            parser << chunk
          end
        end
      end

    end
  end
end