Sha256: 660c3f7aa82ce9ac09519778541ee84ec39fcd053bf5644cc70049a5b284f908

Contents?: true

Size: 1.75 KB

Versions: 21

Compression:

Stored size: 1.75 KB

Contents

module Fog
  module AWS
    class S3

      class Object < Fog::Model

        attribute :body
        attribute :content_length,  'Content-Length'
        attribute :content_type,    'Content-Type'
        attribute :etag,            ['Etag', 'ETag']
        attribute :key,             'Key'
        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 objects
          @objects
        end

        def reload
          new_attributes = objects.get(@key).attributes
          merge_attributes(new_attributes)
        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

        def objects=(new_objects)
          @objects = new_objects
        end

      end

    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
fog-0.0.25 lib/fog/aws/models/s3/object.rb
fog-0.0.24 lib/fog/aws/models/s3/object.rb
fog-0.0.23 lib/fog/aws/models/s3/object.rb
fog-0.0.22 lib/fog/aws/models/s3/object.rb
fog-0.0.21 lib/fog/aws/models/s3/object.rb
fog-0.0.20 lib/fog/aws/models/s3/object.rb
fog-0.0.19 lib/fog/aws/models/s3/object.rb
fog-0.0.18 lib/fog/aws/models/s3/object.rb
fog-0.0.17 lib/fog/aws/models/s3/object.rb
fog-0.0.16 lib/fog/aws/models/s3/object.rb
fog-0.0.15 lib/fog/aws/models/s3/object.rb
fog-0.0.14 lib/fog/aws/models/s3/object.rb
fog-0.0.13 lib/fog/aws/models/s3/object.rb
fog-0.0.12 lib/fog/aws/models/s3/object.rb
fog-0.0.11 lib/fog/aws/models/s3/object.rb
fog-0.0.10 lib/fog/aws/models/s3/object.rb
fog-0.0.9 lib/fog/aws/models/s3/object.rb
fog-0.0.8 lib/fog/aws/models/s3/object.rb
fog-0.0.7 lib/fog/aws/models/s3/object.rb
fog-0.0.6 lib/fog/aws/models/s3/object.rb