Sha256: 2884dd76acb99aaaafd00810959f8106c9b6a8277b5305ae8b17f52f9a963ea7

Contents?: true

Size: 958 Bytes

Versions: 7

Compression:

Stored size: 958 Bytes

Contents

module RakutenWebService
  class SearchResult
    include Enumerable

    def initialize(params, resource_class, client)
      @params = params
      @resource_class = resource_class
      @client = client
    end

    def each
      if @results 
        @results.each do |item|
          yield item
        end
      else
        @results = []
        params = @params
        response = query
        begin
          resources = @resource_class.parse_response(response.body)
          resources.each do |resource|
            yield resource
            @results << resource
          end

          if response.body['page'] && response.body['page'] < response.body['pageCount']
            response = query(params.merge('page' => response.body['page'] + 1))
          else 
            response = nil
          end
        end while(response) 
      end
    end

    private
    def query(params=nil)
      @client.get(params || @params)
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rakuten_web_service-0.2.3 lib/rakuten_web_service/search_result.rb
rakuten_web_service-0.2.2 lib/rakuten_web_service/search_result.rb
rakuten_web_service-0.2.1 lib/rakuten_web_service/search_result.rb
rakuten_web_service-0.2.0 lib/rakuten_web_service/search_result.rb
rakuten_web_service-0.1.1 lib/rakuten_web_service/search_result.rb
rakuten_web_service-0.1.0 lib/rakuten_web_service/search_result.rb
rakuten_web_service-0.0.1 lib/rakuten_web_service/search_result.rb