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 [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?
# 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
@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 128 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 41 def bucket object.bucket end
@return (see AWS::S3::S3Object#content_length)
# File lib/aws/s3/object_version.rb, line 71 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 78 def content_type head.content_type end
Deletes this object version from S3. @return (see AWS::S3::S3Object#delete)
# File lib/aws/s3/object_version.rb, line 98 def delete object.delete(:version_id => @version_id) 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 112 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 66 def etag head.etag end
@see AWS::S3::S3Object#head @return (see AWS::S3::S3Object#head)
# File lib/aws/s3/object_version.rb, line 60 def head object.head(:version_id => @version_id) end
@private
# File lib/aws/s3/object_version.rb, line 137 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 49 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 105 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 84 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 92 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 54 def url_for method, options = {} object.url_for(method, options.merge(:version_id => version_id)) end