class MSS::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
@return [DateTime] timestamp of this version
@return [S3Object] the object this is a version of.
@return [String] The unique version identifier.
Public Class Methods
@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?
@option options [DateTime] :last_modified Date and time the
object was last modified.
MSS::Core::Model::new
# File lib/mss/s3/object_version.rb, line 32 def initialize(object, version_id, options = {}) @object = object @version_id = version_id @delete_marker = options[:delete_marker] @last_modified = options[:last_modified] super end
Public Instance Methods
@return [Boolean] Returns true if the other object version has
the same s3 object key and version id.
# File lib/mss/s3/object_version.rb, line 138 def ==(other) other.kind_of?(ObjectVersion) and other.object == object and other.version_id == version_id end
# File lib/mss/s3/object_version.rb, line 46 def bucket object.bucket end
@return (see S3Object#content_length
)
# File lib/mss/s3/object_version.rb, line 76 def content_length head.content_length end
@note (see S3Object#content_type
) @see S3Object#content_type
@return (see S3Object#content_type
)
# File lib/mss/s3/object_version.rb, line 83 def content_type head.content_type end
Deletes this object version from S3
. @option options [String] :mfa The serial number and current token code of
the Multi-Factor Authentication (MFA) device for the user. Format is "SERIAL TOKEN" - with a space between the serial and token.
@return (see S3Object#delete
)
# File lib/mss/s3/object_version.rb, line 106 def delete(options = {}) object.delete(:version_id => @version_id, :mfa => options[:mfa] ) end
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/mss/s3/object_version.rb, line 122 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
@see S3Object#etag @return (see S3Object#etag)
# File lib/mss/s3/object_version.rb, line 71 def etag head.etag end
@see S3Object#head
@return (see S3Object#head
)
# File lib/mss/s3/object_version.rb, line 65 def head object.head(:version_id => @version_id) end
@api private
# File lib/mss/s3/object_version.rb, line 147 def inspect "<#{self.class}:#{object.bucket.name}:#{object.key}:#{version_id}>" end
@return (see S3Object#key
)
# File lib/mss/s3/object_version.rb, line 54 def key object.key end
@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/mss/s3/object_version.rb, line 115 def latest? object.versions.latest.version_id == self.version_id end
@see S3Object#metadata
@return (see S3Object#metadata
)
# File lib/mss/s3/object_version.rb, line 89 def metadata object.metadata(:version_id => @version_id) end
Reads the data from this object version. @see S3Object#read
@options (see S3Object#read
) @return (see S3Object#read
)
# File lib/mss/s3/object_version.rb, line 97 def read options = {}, &block object.read(options.merge(:version_id => @version_id), &block) end
(see S3Object#url_for
)
# File lib/mss/s3/object_version.rb, line 59 def url_for method, options = {} object.url_for(method, options.merge(:version_id => version_id)) end