Sha256: 683e69fda2e0a87db34bc202c30ca57583988e6baea8c54af6684f8057b949de

Contents?: true

Size: 1.5 KB

Versions: 6

Compression:

Stored size: 1.5 KB

Contents

module Fog
  module AWS
    class S3

      class Object < Fog::Model

        identity  :key,             'Key'

        attribute :body
        attribute :content_length,  'Content-Length'
        attribute :content_type,    'Content-Type'
        attribute :etag,            ['Etag', 'ETag']
        attribute :last_modified,   ['Last-Modified', 'LastModified']
        attribute :owner
        attribute :size,            'Size'
        attribute :storage_class,   'StorageClass'

        def bucket
          @bucket
        end

        def copy(target_bucket_name, target_object_key)
          data = connection.copy_object(bucket.name, @key, target_bucket_name, target_object_key).body
          target_bucket = connection.buckets.new(:name => target_bucket_name)
          target_object = target_bucket.objects.new(attributes.merge!(:key => target_object_key))
          copy_data = {}
          for key, value in data
            if ['ETag', 'LastModified'].include?(key)
              copy_data[key] = value
            end
          end
          target_object.merge_attributes(copy_data)
          target_object
        end

        def destroy
          connection.delete_object(bucket.name, @key)
          true
        end

        def save(options = {})
          data = connection.put_object(bucket.name, @key, @body, options)
          @etag = data.headers['ETag']
          true
        end

        private

        def bucket=(new_bucket)
          @bucket = new_bucket
        end

      end

    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
fog-0.0.31 lib/fog/aws/models/s3/object.rb
fog-0.0.30 lib/fog/aws/models/s3/object.rb
fog-0.0.29 lib/fog/aws/models/s3/object.rb
fog-0.0.28 lib/fog/aws/models/s3/object.rb
fog-0.0.27 lib/fog/aws/models/s3/object.rb
fog-0.0.26 lib/fog/aws/models/s3/object.rb