Class: Aws::PageableResponse

Inherits:
Seahorse::Client::Response show all
Includes:
Enumerable
Defined in:
aws-sdk-core/lib/aws-sdk-core/pageable_response.rb

Overview

Note:

Normally you should not need to construct a PageableResponse directly. The Aws::Plugins::ResponsePaging plugin automatically decorates all responses with a PageableResponse.

Decorates a Seahorse::Client::Response with paging methods:

page = PageableResponse.new(response, pager)
page.last_page?
#=> false

# sends a request to receive the next response page
page = page.next_page
page.last_page?
#=> true

page.next_page
#=> raises PageableResponse::LastPageError

You can enumerate all response pages with a block

page = PageableResponse.new(response, pager)
page.each do |page|
  # yields once per page
end

Or using #next_page and #last_page?:

page = PageableResponse.new(response, pager)
page = page.next_page until page.last_page?

Defined Under Namespace

Classes: LastPageError

Instance Attribute Summary collapse

Attributes inherited from Seahorse::Client::Response

#context, #data, #error

Instance Method Summary collapse

Methods inherited from Seahorse::Client::Response

#on, #on_success, #successful?

Constructor Details

#initialize(response, pager) ⇒ PageableResponse


39
40
41
42
# File 'aws-sdk-core/lib/aws-sdk-core/pageable_response.rb', line 39

def initialize(response, pager)
  @pager = pager
  super(context:response.context, data:response.data, error:response.error)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Seahorse::Client::Response

Instance Attribute Details

#pagerPaging::Pager (readonly)


45
46
47
# File 'aws-sdk-core/lib/aws-sdk-core/pageable_response.rb', line 45

def pager
  @pager
end

Instance Method Details

#each_page {|response| ... } ⇒ Enumerable? Also known as: each

Yields the current and each following response to the given block.

Yield Parameters:

  • response (Response)

74
75
76
77
78
79
80
81
82
# File 'aws-sdk-core/lib/aws-sdk-core/pageable_response.rb', line 74

def each_page(&block)
  return enum_for(:each_page) unless block_given?
  response = self
  yield(response)
  until response.last_page?
    response = response.next_page
    yield(response)
  end
end

#last_page?Boolean

Returns true if there are no more results. Calling #next_page when this method returns false will raise an error.


50
51
52
53
# File 'aws-sdk-core/lib/aws-sdk-core/pageable_response.rb', line 50

def last_page?
  @last_page = !@pager.truncated?(self)
  @last_page
end

#next_page(params = {}) ⇒ Seahorse::Client::Response


63
64
65
66
67
68
69
# File 'aws-sdk-core/lib/aws-sdk-core/pageable_response.rb', line 63

def next_page(params = {})
  if last_page?
    raise LastPageError.new(self)
  else
    PageableResponse.new(next_response(params), pager)
  end
end

#next_page?Boolean

Returns true if there are more results. Calling #next_page will return the next response.


58
59
60
# File 'aws-sdk-core/lib/aws-sdk-core/pageable_response.rb', line 58

def next_page?
  !last_page?
end