module MSS::Core::Collection::Simple

MSS::Core::Collection::Simple is used by collections that always recieve every matching items in a single response.

This means:

MSS services generally return all items only for requests with a small maximum number of results.

See {MSS::Core::Collection} for documentation on the available collection methods.

Protected Instance Methods

_each_batch(options = {}) { |batch| ... } click to toggle source
# File lib/mss/core/collection/simple.rb, line 39
def _each_batch options = {}, &block

  limit = _extract_limit(options)
  next_token = _extract_next_token(options)
  offset = next_token ? next_token.to_i - 1 : 0

  total = 0
  skipped = 0
  simulated_next_token = nil

  batch = []
  _each_item(options.dup) do |item|

    total += 1

    # skip until we reach our offset (derived from the "next token")
    if skipped < offset
      skipped += 1
      next
    end

    if limit
      if batch.size < limit
        batch << item
      else
        simulated_next_token = total
        break
      end
    else
      batch << item
    end

  end

  yield(batch)

  simulated_next_token

end