summaryrefslogtreecommitdiff
path: root/lib/github/collection.rb
blob: bbca12a1c849b090b2983f9215d6b474d5c46982 (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
module Github
  class Collection
    def initialize(url)
      @url = url
    end

    def fetch(query = {})
      return [] if @url.blank?

      Enumerator.new do |yielder|
        loop do
          response = client.get(@url, query)
          response.body.each { |item| yielder << item }
          raise StopIteration unless response.rels.key?(:next)
          @url = response.rels[:next]
        end
      end.lazy
    end

    private

    def client
      @client ||= Github::Client.new
    end
  end
end