Class: AWS::S3::ObjectVersion
- Inherits:
-
Object
- Object
- AWS::S3::ObjectVersion
- 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
-
#object ⇒ S3Object
readonly
The object this is a version of.
-
#version_id ⇒ String
readonly
The unique version identifier.
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
(also: #eql?)
Returns true if the other object version has the same s3 object key and version id.
- #bucket ⇒ Object
-
#content_length ⇒ Integer
Size of the object in bytes.
-
#content_type ⇒ String
Returns the content type as reported by S3, defaults to an empty string when not provided during upload.
-
#delete ⇒ nil
Deletes this object version from S3.
-
#delete_marker? ⇒ Boolean
If you delete an object in a versioned bucket, a delete marker is created.
-
#etag ⇒ String
Returns the object’s ETag.
-
#head ⇒ Object
A head object response with metatadata, content_length, content_type, etag and server_side_encryption.
-
#initialize(object, version_id, options = {}) ⇒ ObjectVersion
constructor
A new instance of ObjectVersion.
-
#key ⇒ String
The objects unique key.
-
#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.
-
#metadata ⇒ ObjectMetadata
Returns an instance of ObjectMetadata representing the metadata for this object.
-
#read(options = {}, &block) ⇒ Object
Reads the data from this object version.
Constructor Details
#initialize(object, version_id, options = {}) ⇒ ObjectVersion
Returns a new instance of ObjectVersion.
31 32 33 34 35 36 |
# File 'lib/aws/s3/object_version.rb', line 31 def initialize(object, version_id, = {}) @object = object @version_id = version_id @delete_marker = [:delete_marker] super end |
Instance Attribute Details
#object ⇒ S3Object (readonly)
Returns the object this is a version of.
39 40 41 |
# File 'lib/aws/s3/object_version.rb', line 39 def object @object end |
#version_id ⇒ String (readonly)
Returns 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.
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 |
#bucket ⇒ Object
41 42 43 |
# File 'lib/aws/s3/object_version.rb', line 41 def bucket object.bucket end |
#content_length ⇒ Integer
Returns 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_type ⇒ String
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.
73 74 75 |
# File 'lib/aws/s3/object_version.rb', line 73 def content_type head.content_type end |
#delete ⇒ nil
Deletes this object version from S3.
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.
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 |
#etag ⇒ String
Returns the object’s ETag
61 62 63 |
# File 'lib/aws/s3/object_version.rb', line 61 def etag head.etag end |
#head ⇒ Object
Returns A head object response with metatadata, content_length, content_type, etag and server_side_encryption.
55 56 57 |
# File 'lib/aws/s3/object_version.rb', line 55 def head object.head(:version_id => @version_id) end |
#key ⇒ String
Returns 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.
100 101 102 |
# File 'lib/aws/s3/object_version.rb', line 100 def latest? object.versions.latest.version_id == self.version_id end |
#metadata ⇒ ObjectMetadata
Returns an instance of ObjectMetadata representing the metadata for this object.
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.
87 88 89 |
# File 'lib/aws/s3/object_version.rb', line 87 def read = {}, &block object.read(.merge(:version_id => @version_id), &block) end |