Sha256: 57299a4b72c8e4be6c895a8cf0d40fed8f353e0692ba35872d12cb47de6d09e0

Contents?: true

Size: 1.3 KB

Versions: 8

Compression:

Stored size: 1.3 KB

Contents

require 'fog/model'

module Fog
  module Rackspace
    class Storage

      class File < Fog::Model

        identity  :key,             :aliases => 'Key'

        attr_accessor :body
        attribute :content_length,  :aliases => 'Content-Length'
        attribute :content_type,    :aliases => 'Content-Type'
        attribute :etag,            :aliases => 'Etag'
        attribute :last_modified,   :aliases => 'Last-Modified'

        def body
          @body ||= if last_modified
            collection.get(identity).body
          else
            ''
          end
        end

        def directory
          @directory
        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
          requires :body, :directory, :key
          data = connection.put_object(directory.name, @key, @body)
          @etag = data.headers['ETag']
          true
        end

        private

        def directory=(new_directory)
          @directory = new_directory
        end

      end

    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
fog-0.3.7 lib/fog/rackspace/models/storage/file.rb
fog-0.3.6 lib/fog/rackspace/models/storage/file.rb
fog-0.3.5 lib/fog/rackspace/models/storage/file.rb
fog-0.3.4 lib/fog/rackspace/models/storage/file.rb
fog-0.3.3 lib/fog/rackspace/models/storage/file.rb
fog-0.3.2 lib/fog/rackspace/models/storage/file.rb
fog-0.3.1 lib/fog/rackspace/models/storage/file.rb
fog-0.3.0 lib/fog/rackspace/models/storage/file.rb