- def each_page
- api_params = {
- _method: 'GET'
- }
- api_params[:where] = @cond if @cond
- api_params[:eager] = '1' if @eager
- api_params[:limit] = @limit if @limit
- api_params[:select] = @select if @select
- api_params[:order] = @orderby_spec if @orderby_spec
- api_params[:filters] = @filters if @filters
-
- item_count = 0
-
- if @offset
- offset = @offset
- else
- offset = 0
- end
-
- if @limit.is_a? Integer
- items_to_get = @limit
- else
- items_to_get = 1000000000
- end
-
- begin
- api_params[:offset] = offset
-
- res = arvados_api_client.api @resource_class, '', api_params
- items = arvados_api_client.unpack_api_response res
-
- if items.nil? or items.size == 0
- break
- end
-
- @items_available = items.items_available if items.respond_to? :items_available
- @result_limit = items.limit
- @result_offset = items.offset
- @result_links = items.links if items.respond_to? :links
-
- item_count += items.size
-
- if items.respond_to? :items_available and
- (@limit.nil? or (@limit.is_a? Integer and @limit > items.items_available))
- items_to_get = items.items_available
- end
-
- offset = items.offset + items.size
-
- yield items
-
- end while @fetch_multiple_pages and item_count < items_to_get
- self
- end
-