class Aws::Pager

@api private

Attributes

limit_key[R]

@return [Symbol, nil]

tokens[R]

@return [Hash, nil]

Public Class Methods

new(options) click to toggle source

@option options [required, Hash<JMESPath,JMESPath>] :tokens @option options [String<JMESPath>] :limit_key @option options [String<JMESPath>] :more_results

# File lib/aws-sdk-core/pager.rb, line 12
def initialize(options)
  @tokens = options.fetch(:tokens)
  @limit_key = options.fetch(:limit_key, nil)
  @more_results = options.fetch(:more_results, nil)
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 26
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 34
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 43
def truncated?(response)
  if @more_results
    JMESPath.search(@more_results, response.data)
  else
    next_t = next_tokens(response)
    prev_t = prev_tokens(response)
    !(next_t.empty? || next_t == prev_t)
  end
end

Private Instance Methods

empty_value?(value) click to toggle source
# File lib/aws-sdk-core/pager.rb, line 55
def empty_value?(value)
  value.nil? || value == '' || value == [] || value == {}
end