Class AWS::S3::Tree
In: lib/aws/s3/tree/branch_node.rb
lib/aws/s3/tree/node.rb
lib/aws/s3/tree/parent.rb
lib/aws/s3/tree/leaf_node.rb
lib/aws/s3/tree/child_collection.rb
lib/aws/s3/tree.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/20011/fall', 'photos/20011/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]