class Aws::Paging::Pager

Attributes

limit_key[R]

@return [Symbol, nil]

Public Class Methods

new(rules) click to toggle source
# File lib/aws-sdk-core/paging/pager.rb, line 5
def initialize(rules)
  if rules['more_results']
    @more_results = underscore(rules['more_results'])
  end
  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/paging/pager.rb, line 20
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
truncated?(response) click to toggle source

@param [Seahorse::Client::Response] response @return [Boolean]

# File lib/aws-sdk-core/paging/pager.rb, line 29
def truncated?(response)
  if @more_results
    JMESPath.search(@more_results, response.data)
  else
    !next_tokens(response).empty?
  end
end

Private Instance Methods

empty_value?(value) click to toggle source
# File lib/aws-sdk-core/paging/pager.rb, line 54
def empty_value?(value)
  value.nil? || value == [] || value == {}
end
map_tokens(rules) click to toggle source
# File lib/aws-sdk-core/paging/pager.rb, line 39
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/paging/pager.rb, line 48
def underscore(str)
  str.
    gsub(' or ', '||').
    gsub(/\w+/) { |part| Seahorse::Util.underscore(part) }
end