class Aws::Pager
@api private
Attributes
limit_key[R]
@return [Symbol, nil]
Public Class Methods
new(rules)
click to toggle source
# File lib/aws-sdk-core/pager.rb, line 5 def initialize(rules) @more_results = rules['more_results'] @more_results = underscore(@more_results) if @more_results if rules['limit_key'] @limit_key = underscore(rules['limit_key']).to_sym end map_tokens(rules) end
Public Instance Methods
next_tokens(response)
click to toggle source
@param [Seahorse::Client::Response] response @return [Hash]
# File lib/aws-sdk-core/pager.rb, line 19 def next_tokens(response) @tokens.each.with_object({}) do |(source, target), next_tokens| value = JMESPath.search(source, response.data) next_tokens[target.to_sym] = value unless empty_value?(value) end end
prev_tokens(response)
click to toggle source
@api private
# File lib/aws-sdk-core/pager.rb, line 27 def prev_tokens(response) @tokens.each.with_object({}) do |(_, target), tokens| value = JMESPath.search(target, response.context.params) tokens[target.to_sym] = value unless empty_value?(value) end end
truncated?(response)
click to toggle source
@param [Seahorse::Client::Response] response @return [Boolean]
# File lib/aws-sdk-core/pager.rb, line 36 def truncated?(response) if @more_results JMESPath.search(@more_results, response.data) else next_tokens = self.next_tokens(response) prev_tokens = self.prev_tokens(response) !(next_tokens.empty? || next_tokens == prev_tokens) end end
Private Instance Methods
empty_value?(value)
click to toggle source
# File lib/aws-sdk-core/pager.rb, line 63 def empty_value?(value) value.nil? || value == '' || value == [] || value == {} end
map_tokens(rules)
click to toggle source
# File lib/aws-sdk-core/pager.rb, line 48 def map_tokens(rules) input = Array(rules['input_token']) output = Array(rules['output_token']) @tokens = {} input.each.with_index do |key, n| @tokens[underscore(output[n])] = underscore(key) end end
underscore(str)
click to toggle source
# File lib/aws-sdk-core/pager.rb, line 57 def underscore(str) str. gsub(' or ', '||'). gsub(/\w+/) { |part| Seahorse::Util.underscore(part) } end