Module: AWS::S3::PrefixedCollection

Includes:
PaginatedCollection
Included in:
PrefixAndDelimiterCollection
Defined in:
lib/aws/s3/prefixed_collection.rb

Instance Attribute Summary collapse

Attributes included from Core::Model

#config

Instance Method Summary collapse

Methods included from Core::Collection::Limitable

#each_batch

Methods included from Core::Collection

#each, #each_batch, #enum, #first, #in_groups_of, #page

Methods included from Core::Model

#client, #config_prefix, #inspect

Instance Attribute Details

#prefixString? (readonly)

Returns The prefix of this collection.

Returns:

  • (String, nil)

    The prefix of this collection.


30
31
32
# File 'lib/aws/s3/prefixed_collection.rb', line 30

def prefix
  @prefix
end

Instance Method Details

#initialize(*args) ⇒ Object


22
23
24
25
26
27
# File 'lib/aws/s3/prefixed_collection.rb', line 22

def initialize *args
  options = args.last.is_a?(Hash) ? args.pop : {}
  @prefix = options[:prefix]
  args.push(options)
  super(*args)
end

#with_prefix(prefix, mode = :replace) ⇒ Collection

Returns a new collection with a different prefix

Examples:

objects = collection.with_prefix('photos')
objects.prefix #=> 'photos'

Chaining with_prefix replaces previous prefix

objects = collection.with_prefix('photos').with_prefix('videos')
objects.prefix #=> 'videos'

Chaining with_prefix with :append

objects = collection.with_prefix('a/').with_prefix('b/', :append)
objects.prefix #=> 'a/b/'

Chaining with_prefix with :prepend

objects = collection.with_prefix('a/').with_prefix('b/', :prepend)
objects.prefix #=> 'b/a/'

Parameters:

  • prefix (String)

    The prefix condition that limits what objects are returned by this collection.

  • mode (Symbol) (defaults to: :replace)

    (:replace) If you chain calls to #with_prefix the mode affects if the prefix prepends, appends, or replaces. Valid modes are:

    • :replace

    • :append

    • :prepend

Returns:

  • (Collection)

    Returns a new collection with a modified prefix.


59
60
61
62
63
64
65
66
67
68
69
# File 'lib/aws/s3/prefixed_collection.rb', line 59

def with_prefix prefix, mode = :replace
  new_prefix = case mode
  when :replace then prefix
  when :append  then "#{@prefix}#{prefix}"
  when :prepend then "#{prefix}#{@prefix}"
  else
    raise ArgumentError, "invalid prefix mode `#{mode}`, it must be " +
      ":replace, :append or :prepend"
  end
  self.class.new(bucket, :prefix => new_prefix)
end