Class: S3::Bucket

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Proxies, Parser
Defined in:
lib/s3/bucket.rb

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Methods included from Parser

#parse_copy_object_result, #parse_error, #parse_is_truncated, #parse_list_all_my_buckets_result, #parse_list_bucket_result, #parse_location_constraint, #rexml_document

Instance Attribute Details

- (Object) name

Returns the value of attribute name



7
8
9
# File 'lib/s3/bucket.rb', line 7

def name
  @name
end

- (Object) service

Returns the value of attribute service



7
8
9
# File 'lib/s3/bucket.rb', line 7

def service
  @service
end

Instance Method Details

- (Object) ==(other)

Compares the bucket with other bucket. Returns true if the names of the buckets are the same, and both have the same services (see Service equality)



29
30
31
# File 'lib/s3/bucket.rb', line 29

def ==(other)
  self.name == other.name and self.service == other.service
end

- (Object) destroy(force = false)

Destroys given bucket. Raises an S3::Error::BucketNotEmpty exception if the bucket is not empty. You can destroy non-empty bucket passing true (to force destroy)



45
46
47
48
49
50
51
52
53
54
55
# File 'lib/s3/bucket.rb', line 45

def destroy(force = false)
  delete_bucket
  true
rescue Error::BucketNotEmpty
  if force
    objects.destroy_all
    retry
  else
    raise
  end
end

- (Boolean) exists?

Similar to retrieve, but catches S3::Error::NoSuchBucket exceptions and returns false instead.

Returns:

  • (Boolean)


35
36
37
38
39
40
# File 'lib/s3/bucket.rb', line 35

def exists?
  retrieve
  true
rescue Error::NoSuchBucket
  false
end

- (Object) host

Returns host name of the bucket according (see #vhost? method)



78
79
80
# File 'lib/s3/bucket.rb', line 78

def host
  vhost? ? "#@name.#{HOST}" : "#{HOST}"
end

- (Object) inspect

:nodoc:



100
101
102
# File 'lib/s3/bucket.rb', line 100

def inspect #:nodoc:
  "#<#{self.class}:#{name}>"
end

- (Object) location(reload = false)

Returns location of the bucket, e.g. "EU"



21
22
23
24
# File 'lib/s3/bucket.rb', line 21

def location(reload = false)
  return @location if defined?(@location) and not reload
  @location = location_constraint
end

- (Object) object(key)

Returns the object with the given key. Does not check whether the object exists. But also does not issue any HTTP requests, so it's much faster than objects.find



96
97
98
# File 'lib/s3/bucket.rb', line 96

def object(key)
  Object.send(:new, self, :key => key)
end

- (Object) objects

Returns the objects in the bucket and caches the result



89
90
91
# File 'lib/s3/bucket.rb', line 89

def objects
  Proxy.new(lambda { list_bucket }, :owner => self, :extend => ObjectsExtension)
end

- (Object) path_prefix

Returns path prefix for non VHOST bucket. Path prefix is used instead of VHOST name, e.g. "bucket_name/"



84
85
86
# File 'lib/s3/bucket.rb', line 84

def path_prefix
  vhost? ? "" : "#@name/"
end

- (Object) retrieve

Retrieves the bucket information from the server. Raises an S3::Error exception if the bucket doesn't exist or you don't have access to it, etc.



15
16
17
18
# File 'lib/s3/bucket.rb', line 15

def retrieve
  bucket_headers
  self
end

- (Object) save(options = {})

Saves the newly built bucket.

Options

  • :location - location of the bucket (:eu or us)

  • Any other options are passed through to Connection#request



64
65
66
67
68
# File 'lib/s3/bucket.rb', line 64

def save(options = {})
  options = {:location => options} unless options.is_a?(Hash)
  create_bucket_configuration(options)
  true
end

- (Boolean) vhost?

Returns true if the name of the bucket can be used like VHOST name. If the bucket contains characters like underscore it can't be used as VHOST (e.g. bucket_name.s3.amazonaws.com)

Returns:

  • (Boolean)


73
74
75
# File 'lib/s3/bucket.rb', line 73

def vhost?
  "#@name.#{HOST}" =~ /\A#{URI::REGEXP::PATTERN::HOSTNAME}\Z/
end