Class: AWS::S3::ObjectVersion

Inherits:
Object
  • Object
show all
Defined in:
lib/aws/s3/object_version.rb

Overview

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.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object, version_id, options = {}) ⇒ ObjectVersion

Returns a new instance of ObjectVersion.

Parameters:

  • object (S3Object)

    The object this is a version of.

  • version_id (String)

    The unique id for this version.

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :delete_marker (Boolean)

    Is this version a delete marker?



31
32
33
34
35
36
# 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

Instance Attribute Details

#objectS3Object (readonly)

Returns the object this is a version of.

Returns:

  • (S3Object)

    the object this is a version of.



39
40
41
# File 'lib/aws/s3/object_version.rb', line 39

def object
  @object
end

#version_idString (readonly)

Returns The unique version identifier.

Returns:

  • (String)

    The unique version identifier.



46
47
48
# File 'lib/aws/s3/object_version.rb', line 46

def version_id
  @version_id
end

Instance Method Details

#==(other) ⇒ Boolean Also known as: eql?

Returns true if the other object version has the same s3 object key and version id.

Returns:

  • (Boolean)

    Returns true if the other object version has the same s3 object key and version id.



123
124
125
126
127
# File 'lib/aws/s3/object_version.rb', line 123

def ==(other)
  other.kind_of?(ObjectVersion) and
    other.object == object and
    other.version_id == version_id
end

#bucketObject



41
42
43
# File 'lib/aws/s3/object_version.rb', line 41

def bucket
  object.bucket
end

#content_lengthInteger

Returns Size of the object in bytes.

Returns:

  • (Integer)

    Size of the object in bytes.



66
67
68
# File 'lib/aws/s3/object_version.rb', line 66

def content_length
  head.content_length
end

#content_typeString

Note:

S3 does not compute content-type. It reports the content-type as was reported during the file upload.

Returns the content type as reported by S3, defaults to an empty string when not provided during upload.

Returns:

  • (String)

    Returns the content type as reported by S3, defaults to an empty string when not provided during upload.

See Also:



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

def content_type
  head.content_type
end

#deletenil

Deletes this object version from S3.

Returns:

  • (nil)


93
94
95
# File 'lib/aws/s3/object_version.rb', line 93

def delete
  object.delete(:version_id => @version_id)
end

#delete_marker?Boolean

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

Returns:

  • (Boolean)

    Returns true if this version is a delete marker.



107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/aws/s3/object_version.rb', line 107

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
      ['foo'] 
      @delete_marker = false
    rescue Errors::MethodNotAllowed => error
      @delete_marker = true
    end
  end
  @delete_marker
end

#etagString

Returns the object’s ETag

Returns:

  • (String)

    Returns the object’s ETag

See Also:



61
62
63
# File 'lib/aws/s3/object_version.rb', line 61

def etag
  head.etag
end

#headObject

Returns A head object response with metatadata, content_length, content_type, etag and server_side_encryption.

Returns:

  • A head object response with metatadata, content_length, content_type, etag and server_side_encryption.

See Also:



55
56
57
# File 'lib/aws/s3/object_version.rb', line 55

def head
  object.head(:version_id => @version_id)
end

#keyString

Returns The objects unique key.

Returns:

  • (String)

    The objects unique key



49
50
51
# File 'lib/aws/s3/object_version.rb', line 49

def key
  object.key
end

#latest?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.

Returns:

  • (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.



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

def latest?
  object.versions.latest.version_id == self.version_id
end

#metadataObjectMetadata

Returns an instance of ObjectMetadata representing the metadata for this object.

Returns:

  • (ObjectMetadata)

    Returns an instance of ObjectMetadata representing the metadata for this object.

See Also:



79
80
81
# File 'lib/aws/s3/object_version.rb', line 79

def 
  object.(:version_id => @version_id)
end

#read(options = {}, &block) ⇒ Object

Reads the data from this object version.

See Also:



87
88
89
# File 'lib/aws/s3/object_version.rb', line 87

def read options = {}, &block
  object.read(options.merge(:version_id => @version_id), &block)
end