Sha256: 1919ff477831ac0715e376e23ead489b492cc99a3a0cee1b7369276c3e65996e
Contents?: true
Size: 1.26 KB
Versions: 62
Compression:
Stored size: 1.26 KB
Contents
module Fog module AWS class IAM class PagedCollection < Fog::Collection def self.inherited(klass) klass.send(:attribute, :truncated, :aliases => 'IsTruncated', :type => :boolean) klass.send(:attribute, :marker, :aliases => 'Marker') super end def each_entry(*args, &block) to_a.each(*args, &block) end def each(options={}) limit = options[:limit] || 100 if !block_given? self else subset = dup.all subset.each_entry { |f| yield f } while subset.truncated subset. all(:marker => subset.marker, :limit => limit). each_entry { |f| yield f } end self end end protected def page_params(options={}) marker = options.fetch(:marker) { options.fetch('Marker') { self.marker } } limit = options.fetch(:limit) { options['MaxItems'] } params = {} if marker && !marker.empty? params.merge!('Marker' => marker) end if limit params.merge!('MaxItems' => limit) end params end end end end end
Version data entries
62 entries across 60 versions & 2 rubygems
Version | Path |
---|---|
fog-aws-0.8.1 | lib/fog/aws/iam/paged_collection.rb |
fog-aws-0.8.0 | lib/fog/aws/iam/paged_collection.rb |