class AWS::S3::ObjectVersion

Represents a single version of an S3Object.

When you enable versioning on a S3 bucket, writing to an object will create an object version instead of replacing the existing object.

Attributes

object[R]

@return [S3Object] the object this is a version of.

version_id[R]

@return [String] The unique version identifier.

Public Class Methods

new(object, version_id, options = {}) click to toggle source

@param [S3Object] object The object this is a version of. @param [String] #version_id The unique id for this version. @param [Hash] options @option options [Boolean] :delete_marker Is this version a

delete marker?
# File lib/aws/s3/object_version.rb, line 31
def initialize(object, version_id, options = {})
  @object = object
  @version_id = version_id
  @delete_marker = options[:delete_marker]
  super
end

Public Instance Methods

==(other) click to toggle source

@return [Boolean] Returns true if the other object version has

the same s3 object key and version id.
# File lib/aws/s3/object_version.rb, line 128
def ==(other)
  other.kind_of?(ObjectVersion) and
    other.object == object and
    other.version_id == version_id
end
Also aliased as: eql?
bucket() click to toggle source
# File lib/aws/s3/object_version.rb, line 41
def bucket
  object.bucket
end
content_length() click to toggle source

@return (see AWS::S3::S3Object#content_length)

# File lib/aws/s3/object_version.rb, line 71
def content_length
  head.content_length
end
content_type() click to toggle source

@note (see AWS::S3::S3Object#content_type) @see AWS::S3::S3Object#content_type @return (see AWS::S3::S3Object#content_type)

# File lib/aws/s3/object_version.rb, line 78
def content_type
  head.content_type
end
delete() click to toggle source

Deletes this object version from S3. @return (see AWS::S3::S3Object#delete)

# File lib/aws/s3/object_version.rb, line 98
def delete
  object.delete(:version_id => @version_id)
end
delete_marker?() click to toggle source

If you delete an object in a versioned bucket, a delete marker is created.

@return [Boolean] Returns true if this version is a delete marker.

# File lib/aws/s3/object_version.rb, line 112
def delete_marker?
  if @delete_marker.nil?
    begin
      # S3 responds with a 405 (method not allowed) when you try
      # to HEAD an s3 object version that is a delete marker
      metadata['foo'] 
      @delete_marker = false
    rescue Errors::MethodNotAllowed => error
      @delete_marker = true
    end
  end
  @delete_marker
end
eql?(other) click to toggle source
Alias for: ==
etag() click to toggle source

@see AWS::S3::S3Object#etag @return (see AWS::S3::S3Object#etag)

# File lib/aws/s3/object_version.rb, line 66
def etag
  head.etag
end
head() click to toggle source

@see AWS::S3::S3Object#head @return (see AWS::S3::S3Object#head)

# File lib/aws/s3/object_version.rb, line 60
def head
  object.head(:version_id => @version_id)
end
inspect() click to toggle source

@private

# File lib/aws/s3/object_version.rb, line 137
def inspect
  "<#{self.class}:#{object.bucket.name}:#{object.key}:#{version_id}>"
end
key() click to toggle source

@return (see AWS::S3::S3Object#key)

# File lib/aws/s3/object_version.rb, line 49
def key
  object.key
end
latest?() click to toggle source

@return [Boolean] Returns this if this is the latest version of

the object, false if the object has been written to since
this version was created.
# File lib/aws/s3/object_version.rb, line 105
def latest?
  object.versions.latest.version_id == self.version_id
end
metadata() click to toggle source

@see AWS::S3::S3Object#metadata @return (see AWS::S3::S3Object#metadata)

# File lib/aws/s3/object_version.rb, line 84
def metadata
  object.metadata(:version_id => @version_id)
end
read(options = {}) click to toggle source

Reads the data from this object version. @see AWS::S3::S3Object#read @options (see AWS::S3::S3Object#read) @return (see AWS::S3::S3Object#read)

# File lib/aws/s3/object_version.rb, line 92
def read options = {}, &block
  object.read(options.merge(:version_id => @version_id), &block)
end
url_for(method, options = {}) click to toggle source

(see AWS::S3::S3Object#url_for)

# File lib/aws/s3/object_version.rb, line 54
def url_for method, options = {}
  object.url_for(method, options.merge(:version_id => version_id))
end