Module: Miasma::Contrib::AwsApiCore::RequestUtils

Overview

Utility methods for API requests

Instance Method Summary collapse

Instance Method Details

#all_result_pages(next_token, *result_key) {|options| ... } ⇒ Array

Fetch all results when tokens are being used for paging results

Parameters:

  • next_token (String)
  • result_key (Array<String, Symbol>)

    path to result

Yields:

  • block to perform request

Yield Parameters:

  • options (Hash)

    request parameters (token information)

Returns:

  • (Array)


29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/miasma/contrib/aws.rb', line 29

def all_result_pages(next_token, *result_key, &block)
  list = []
  options = next_token ? Smash.new("NextToken" => next_token) : Smash.new
  result = block.call(options)
  content = result.get(*result_key.dup)
  if content.is_a?(Array)
    list += content
  else
    list << content
  end
  set = result.get(*result_key.slice(0, 3))
  if set.is_a?(Hash) && set["NextToken"]
    [content].flatten.compact.each do |item|
      if item.is_a?(Hash)
        item["NextToken"] = set["NextToken"]
      end
    end
    list += all_result_pages(set["NextToken"], *result_key, &block)
  end
  list.compact
end