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.
@return [DateTime] timestamp of this version
@return [S3Object] the object this is a version of.
@return [String] The unique version identifier.
@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.
# File lib/aws/s3/object_version.rb, line 33 def initialize(object, version_id, options = {}) @object = object @version_id = version_id @delete_marker = options[:delete_marker] @last_modified = options[:last_modified] super end
@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 139 def ==(other) other.kind_of?(ObjectVersion) and other.object == object and other.version_id == version_id end
# File lib/aws/s3/object_version.rb, line 47 def bucket object.bucket end
@return (see AWS::S3::S3Object#content_length)
# File lib/aws/s3/object_version.rb, line 77 def content_length head.content_length end
@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 84 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 AWS::S3::S3Object#delete)
# File lib/aws/s3/object_version.rb, line 107 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/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 metadata['foo'] @delete_marker = false rescue Errors::MethodNotAllowed => error @delete_marker = true end end @delete_marker end
@see AWS::S3::S3Object#etag @return (see AWS::S3::S3Object#etag)
# File lib/aws/s3/object_version.rb, line 72 def etag head.etag end
@see AWS::S3::S3Object#head @return (see AWS::S3::S3Object#head)
# File lib/aws/s3/object_version.rb, line 66 def head object.head(:version_id => @version_id) end
@api private
# File lib/aws/s3/object_version.rb, line 148 def inspect "<#{self.class}:#{object.bucket.name}:#{object.key}:#{version_id}>" end
@return (see AWS::S3::S3Object#key)
# File lib/aws/s3/object_version.rb, line 55 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/aws/s3/object_version.rb, line 116 def latest? object.versions.latest.version_id == self.version_id end
@see AWS::S3::S3Object#metadata @return (see AWS::S3::S3Object#metadata)
# File lib/aws/s3/object_version.rb, line 90 def metadata object.metadata(:version_id => @version_id) end
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 98 def read options = {}, &block object.read(options.merge(:version_id => @version_id), &block) end
(see AWS::S3::S3Object#url_for)
# File lib/aws/s3/object_version.rb, line 60 def url_for method, options = {} object.url_for(method, options.merge(:version_id => version_id)) end