Sha256: 8c7e47a0f2b4f324c29510af087dd43ec890346d2e4f0b9ccb6a302c06aa4c83

Contents?: true

Size: 1.87 KB

Versions: 5

Compression:

Stored size: 1.87 KB

Contents

module Fog
  module AWS
    class S3

      class File < 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,           'Owner'
        attribute :size,            'Size'
        attribute :storage_class,   'StorageClass'

        def directory
          @directory
        end

        def copy(target_directory_name, target_file_key)
          requires :directory, :key
          data = connection.copy_object(directory.name, @key, target_directory_name, target_file_key).body
          target_directory = connection.directories.new(:name => target_directory_name)
          target_file = target_directory.files.new(attributes.merge!(:key => target_file_key))
          copy_data = {}
          for key, value in data
            if ['ETag', 'LastModified'].include?(key)
              copy_data[key] = value
            end
          end
          target_file.merge_attributes(copy_data)
          target_file
        end

        def destroy
          requires :directory, :key
          connection.delete_object(directory.name, @key)
          true
        end

        def owner=(new_owner)
          if new_owner
            @owner = {
              :display_name => new_owner['DisplayName'],
              :id           => new_owner['ID']
            }
          end
        end

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

        private

        def directory=(new_directory)
          @directory = new_directory
        end

      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
fog-0.0.44 lib/fog/aws/models/s3/file.rb
fog-0.0.43 lib/fog/aws/models/s3/file.rb
fog-0.0.42 lib/fog/aws/models/s3/file.rb
fog-0.0.41 lib/fog/aws/models/s3/file.rb
fog-0.0.40 lib/fog/aws/models/s3/file.rb