Class: Aws::PageableResponse
- Inherits:
-
Seahorse::Client::Response
- Object
- Seahorse::Client::Response
- Aws::PageableResponse
- Includes:
- Enumerable
- Defined in:
- lib/aws-sdk-core/pageable_response.rb
Overview
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
- #pager ⇒ Paging::Pager readonly
Attributes inherited from Seahorse::Client::Response
Instance Method Summary collapse
- #count ⇒ Object private
-
#each {|response| ... } ⇒ Enumerable?
(also: #each_page)
Yields the current and each following response to the given block.
-
#initialize(response, pager) ⇒ PageableResponse
constructor
A new instance of PageableResponse.
-
#last_page? ⇒ Boolean
Returns ‘true` if there are no more results.
- #next_page(params = {}) ⇒ Seahorse::Client::Response
-
#next_page? ⇒ Boolean
Returns ‘true` if there are more results.
- #respond_to?(method_name, *args) ⇒ Boolean private
Methods inherited from Seahorse::Client::Response
#inspect, #on, #on_success, #successful?
Constructor Details
#initialize(response, pager) ⇒ PageableResponse
Returns a new instance of PageableResponse.
39 40 41 42 |
# File '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
#pager ⇒ Paging::Pager (readonly)
45 46 47 |
# File 'lib/aws-sdk-core/pageable_response.rb', line 45 def pager @pager end |
Instance Method Details
#count ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
86 87 88 89 90 91 92 |
# File 'lib/aws-sdk-core/pageable_response.rb', line 86 def count if respond_to?(:count) data.count else raise NotImplementedError end end |
#each {|response| ... } ⇒ Enumerable? Also known as: each_page
Yields the current and each following response to the given block.
74 75 76 77 78 79 80 81 82 |
# File 'lib/aws-sdk-core/pageable_response.rb', line 74 def each(&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 '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 '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 'lib/aws-sdk-core/pageable_response.rb', line 58 def next_page? !last_page? end |
#respond_to?(method_name, *args) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
95 96 97 98 99 100 101 |
# File 'lib/aws-sdk-core/pageable_response.rb', line 95 def respond_to?(method_name, *args) if method_name == :count data.respond_to?(:count) else super end end |