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