module Miasma::Contrib::AwsApiCore::RequestUtils
Utility methods for API requests
Public Instance Methods
all_result_pages(next_token, *result_key, &block)
click to toggle source
Fetch all results when tokens are being used for paging results
@param next_token [String] @param result_key [Array<String, Symbol>] path to result @yield block to perform request @yieldparam options [Hash] request parameters (token information) @return [Array]
# 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