Class AWS::S3::Tree
In: lib/aws/s3/tree.rb
lib/aws/s3/tree/child_collection.rb
lib/aws/s3/tree/leaf_node.rb
lib/aws/s3/tree/parent.rb
lib/aws/s3/tree/node.rb
lib/aws/s3/tree/branch_node.rb
Parent: Object

A utility class that supports exploring an S3 {Bucket} like a tree.

Frequently objects stored in S3 have keys that look like a filesystem directory structure.

Given you have a bucket with the following keys:

    README.txt
    videos/wedding.mpg
    videos/family_reunion.mpg
    photos/2010/house.jpg
    photos/2011/fall/leaves.jpg
    photos/2011/summer/vacation.jpg
    photos/2011/summer/family.jpg

You might like to explore the contents of this bucket as a tree:

    tree = bucket.as_tree

    directories = tree.children.select(&:branch?).collect(&:prefix)
    #=> ['photos', 'videos']

    files = tree.children.select(&:leaf?).collect(&:key)
    #=> ['README.txt']

If you want to start further down, pass a prefix to {Bucket#as_tree}:

    tree = bucket.as_tree(:prefix => 'photos/2011')

    directories = tree.children.select(&:branch?).collect(&:prefix)
    #=> ['photos/2011/fall', 'photos/2011/summer']

    files = tree.children.select(&:leaf?).collect(&:key)
    #=> []

All non-leaf nodes ({Tree} and {Tree::BranchNode} instances) have a {Tree::Parent#children} method that provides access to the next level of the tree, and all nodes ({Tree}, {Tree::BranchNode}, and {Tree::LeafNode}) have a {parent} method that returns the parent node. In our examples above, the non-leaf nodes are common prefixes to multiple keys (directories) and leaf nodes are object keys.

You can continue crawling the tree using the `children` collection on each branch node, which will contain the branch nodes and leaf nodes below it.

You can construct a Tree object using the `as_tree` method of any of the following classes:

The methods to explore the tree are the same for each kind of leaf node, but {Tree::LeafNode#member} will return a different type of object depending on which kind of collection the tree is using.

Methods

new   parent  

Included Modules

Parent

Classes and Modules

Module AWS::S3::Tree::Parent
Class AWS::S3::Tree::BranchNode
Class AWS::S3::Tree::ChildCollection
Class AWS::S3::Tree::LeafNode
Class AWS::S3::Tree::Node

Public Class methods

@param [ObjectCollection, BucketVersionCollection,

  MultipartUploadCollection] collection The collection whose
  members will be explored using the tree.

@param [Hash] options Additional options for constructing the

  tree.

@option options [String] :prefix (nil) Set prefix to choose

  where the top of the tree will be.  A value of `nil` means
  that the tree will include all objects in the collection.

@option options [String] :delimiter (’/’) The string that

  separates each level of the tree.  This is usually a
  directory separator.

@option options [Boolean] :append (true) If true, the delimiter is

  appended to the prefix when the prefix does not already end
  with the delimiter.

Public Instance methods

@return The parent node in the tree. In the case of a Tree,

  the parent is always nil.

[Validate]