You are viewing documentation for version 1 of the AWS SDK for Ruby. Version 2 documentation can be found here.
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
-
#last_modified ⇒ DateTime
readonly
Timestamp of this version.
-
#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(options = {}) ⇒ 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 metadata, 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.
-
#url_for(method, options = {}) ⇒ URI::HTTP, URI::HTTPS
Generates a presigned URL for an operation on this object.
Constructor Details
#initialize(object, version_id, options = {}) ⇒ ObjectVersion
Returns a new instance of ObjectVersion
33 34 35 36 37 38 39 |
# File 'lib/aws/s3/object_version.rb', line 33 def initialize(object, version_id, = {}) @object = object @version_id = version_id @delete_marker = [:delete_marker] @last_modified = [:last_modified] super end |
Instance Attribute Details
#last_modified ⇒ DateTime (readonly)
Returns timestamp of this version
45 46 47 |
# File 'lib/aws/s3/object_version.rb', line 45 def last_modified @last_modified end |
#object ⇒ S3Object (readonly)
Returns the object this is a version of.
42 43 44 |
# File 'lib/aws/s3/object_version.rb', line 42 def object @object end |
#version_id ⇒ String (readonly)
Returns The unique version identifier.
52 53 54 |
# File 'lib/aws/s3/object_version.rb', line 52 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.
139 140 141 142 143 |
# File 'lib/aws/s3/object_version.rb', line 139 def ==(other) other.kind_of?(ObjectVersion) and other.object == object and other.version_id == version_id end |
#bucket ⇒ Object
47 48 49 |
# File 'lib/aws/s3/object_version.rb', line 47 def bucket object.bucket end |
#content_length ⇒ Integer
Returns Size of the object in bytes.
77 78 79 |
# File 'lib/aws/s3/object_version.rb', line 77 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.
84 85 86 |
# File 'lib/aws/s3/object_version.rb', line 84 def content_type head.content_type end |
#delete(options = {}) ⇒ nil
Deletes this object version from S3.
107 108 109 110 111 |
# File 'lib/aws/s3/object_version.rb', line 107 def delete( = {}) object.delete(:version_id => @version_id, :mfa => [:mfa] ) end |
#delete_marker? ⇒ Boolean
If you delete an object in a versioned bucket, a delete marker is created.
123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/aws/s3/object_version.rb', line 123 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
72 73 74 |
# File 'lib/aws/s3/object_version.rb', line 72 def etag head.etag end |
#head ⇒ Object
Returns A head object response with metadata, content_length, content_type, etag and server_side_encryption.
66 67 68 |
# File 'lib/aws/s3/object_version.rb', line 66 def head object.head(:version_id => @version_id) end |
#key ⇒ String
Returns The objects unique key
55 56 57 |
# File 'lib/aws/s3/object_version.rb', line 55 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.
116 117 118 |
# File 'lib/aws/s3/object_version.rb', line 116 def latest? object.versions.latest.version_id == self.version_id end |
#metadata ⇒ ObjectMetadata
Returns an instance of ObjectMetadata representing the metadata for this object.
90 91 92 |
# File 'lib/aws/s3/object_version.rb', line 90 def object.(:version_id => @version_id) end |
#read(options = {}, &block) ⇒ Object
Reads the data from this object version.
98 99 100 |
# File 'lib/aws/s3/object_version.rb', line 98 def read = {}, &block object.read(.merge(:version_id => @version_id), &block) end |
#url_for(method, options = {}) ⇒ URI::HTTP, URI::HTTPS
Generates a presigned URL for an operation on this object. This URL can be used by a regular HTTP client to perform the desired operation without credentials and without changing the permissions of the object.
60 61 62 |
# File 'lib/aws/s3/object_version.rb', line 60 def url_for method, = {} object.url_for(method, .merge(:version_id => version_id)) end |