module Aws::PageableResponse

Decorates a {Seahorse::Client::Response} with paging convenience methods. Some AWS calls provide paged responses to limit the amount of data returned with each response. To optimize for latency, some APIs may return an inconsistent number of responses per page. You should rely on the values of the ‘next_page?` method or using enumerable methods such as `each` rather than the number of items returned to iterate through results. See below for examples.

@note Methods such as ‘to_json` will enumerate all of the responses before

returning the full response as JSON.

# Paged Responses Are Enumerable The simplest way to handle paged response data is to use the built-in enumerator in the response object, as shown in the following example.

s3 = Aws::S3::Client.new

s3.list_objects(bucket:'aws-sdk').each do |response|
  puts response.contents.map(&:key)
end

This yields one response object per API call made, and enumerates objects in the named bucket. The SDK retrieves additional pages of data to complete the request.

# Handling Paged Responses Manually To handle paging yourself, use the response’s ‘next_page?` method to verify there are more pages to retrieve, or use the last_page? method to verify there are no more pages to retrieve.

If there are more pages, use the ‘next_page` method to retrieve the next page of results, as shown in the following example.

s3 = Aws::S3::Client.new

# Get the first page of data
response = s3.list_objects(bucket:'aws-sdk')

# Get additional pages
while response.next_page? do
  response = response.next_page
  # Use the response data here...
  puts response.contents.map(&:key)
end

Attributes

pager[RW]

@return [Paging::Pager]

Public Class Methods

apply(base) click to toggle source
# File lib/aws-sdk-core/pageable_response.rb, line 51
def self.apply(base)
  base.extend Extension
  base.instance_variable_set(:@last_page, nil)
  base.instance_variable_set(:@more_results, nil)
  base
end

Public Instance Methods

each(&block) click to toggle source

Yields the current and each following response to the given block. @yieldparam [Response] response @return [Enumerable,nil] Returns a new Enumerable if no block is given.

# File lib/aws-sdk-core/pageable_response.rb, line 83
def each(&block)
  # Actual implementation is in PageableResponse::Extension
end
Also aliased as: each_page
each_page(&block)
Alias for: each
last_page?() click to toggle source

Returns ‘true` if there are no more results. Calling {#next_page} when this method returns `false` will raise an error. @return [Boolean]

# File lib/aws-sdk-core/pageable_response.rb, line 64
def last_page?
  # Actual implementation is in PageableResponse::Extension
end
next_page(params = {}) click to toggle source

@return [Seahorse::Client::Response]

# File lib/aws-sdk-core/pageable_response.rb, line 76
def next_page(params = {})
  # Actual implementation is in PageableResponse::Extension
end
next_page?() click to toggle source

Returns ‘true` if there are more results. Calling {#next_page} will return the next response. @return [Boolean]

# File lib/aws-sdk-core/pageable_response.rb, line 71
def next_page?
  # Actual implementation is in PageableResponse::Extension
end

Private Instance Methods

next_page_params(params) click to toggle source

@param [Hash] params A hash of additional request params to

merge into the next page request.

@return [Hash] Returns the hash of request parameters for the

next page, merging any given params.
# File lib/aws-sdk-core/pageable_response.rb, line 102
def next_page_params(params)
  # Actual implementation is in PageableResponse::Extension
end
next_response(params) click to toggle source

@param [Hash] params A hash of additional request params to

merge into the next page request.

@return [Seahorse::Client::Response] Returns the next page of

results.
# File lib/aws-sdk-core/pageable_response.rb, line 94
def next_response(params)
  # Actual implementation is in PageableResponse::Extension
end