Class: Fog::Storage::Rackspace::File

Inherits:
Model
  • Object
show all
Defined in:
lib/fog/rackspace/models/storage/file.rb

Instance Attribute Summary collapse

Attributes inherited from Model

#collection, #service

Instance Method Summary collapse

Methods inherited from Model

#initialize, #inspect, #reload, #symbolize_keys, #to_json, #wait_for

Methods included from Attributes::ClassMethods

#_load, #aliases, #attribute, #attributes, #identity, #ignore_attributes, #ignored_attributes

Methods included from Core::DeprecatedConnectionAccessors

#connection, #connection=, #prepare_service_value

Methods included from Attributes::InstanceMethods

#_dump, #attributes, #dup, #identity, #identity=, #merge_attributes, #new_record?, #persisted?, #requires, #requires_one

Constructor Details

This class inherits a constructor from Fog::Model

Instance Attribute Details

#access_control_allow_originString

A space delimited list of URLs allowed to make Cross Origin Requests. Format is www.example.com. An asterisk (*) allows all.

Returns:

  • (String)

    string containing a list of space delimited URLs

See Also:



38
# File 'lib/fog/rackspace/models/storage/file.rb', line 38

attribute :access_control_allow_origin, :aliases => ['Access-Control-Allow-Origin']

#content_lengthInteger (readonly)

Returns The content length of the file.

Returns:

  • (Integer)

    The content length of the file



15
# File 'lib/fog/rackspace/models/storage/file.rb', line 15

attribute :content_length,  :aliases => ['bytes', 'Content-Length'], :type => :integer

#content_typeString

Returns The MIME Media Type of the file.

Returns:

  • (String)

    The MIME Media Type of the file

See Also:



20
# File 'lib/fog/rackspace/models/storage/file.rb', line 20

attribute :content_type,    :aliases => ['content_type', 'Content-Type']

#directoryFog::Storage::Rackspace::Directory

Returns directory containing file.

Returns:



47
48
49
# File 'lib/fog/rackspace/models/storage/file.rb', line 47

def directory
  @directory
end

#etagString

The MD5 checksum of file. If included file creation request, will ensure integrity of the file.

Returns:

  • (String)

    MD5 checksum of file.



27
# File 'lib/fog/rackspace/models/storage/file.rb', line 27

attribute :etag,            :aliases => ['hash', 'Etag']

#keyString (readonly)

Returns The name of the file.

Returns:

  • (String)

    The name of the file



11
# File 'lib/fog/rackspace/models/storage/file.rb', line 11

identity  :key,             :aliases => 'name'

#last_modifiedTime

The last time the file was modified

Returns:

  • (Time)

    The last time the file was modified



32
# File 'lib/fog/rackspace/models/storage/file.rb', line 32

attribute :last_modified,   :aliases => ['last_modified', 'Last-Modified'], :type => :time

#originString

Returns The origin is the URI of the object’s host.

Returns:

  • (String)

    The origin is the URI of the object’s host.

See Also:



43
# File 'lib/fog/rackspace/models/storage/file.rb', line 43

attribute :origin,          :aliases => ['Origin']

#public=(value) ⇒ Object (writeonly)

Note:

Required for compatibility with other Fog providers. Not Used.



51
52
53
# File 'lib/fog/rackspace/models/storage/file.rb', line 51

def public=(value)
  @public = value
end

Instance Method Details

#bodyObject

Returns the body/contents of file

Examples:

Retrieve and download contents of Cloud Files object to file system

file_object = directory.files.get('germany.jpg')
File.open('germany.jpg', 'w') {|f| f.write(file_object.body) }

Raises:

See Also:



62
63
64
65
66
67
68
# File 'lib/fog/rackspace/models/storage/file.rb', line 62

def body
  attributes[:body] ||= if last_modified
    collection.get(identity).body
  else
    ''
  end
end

#body=(new_body) ⇒ Object

Sets the body/contents of file

Parameters:



72
73
74
# File 'lib/fog/rackspace/models/storage/file.rb', line 72

def body=(new_body)
  attributes[:body] = new_body
end

#copy(target_directory_key, target_file_key, options = {}) ⇒ Object

Copy file to another directory or directory

Parameters:

  • target_directory_key (String)
  • target_file_key (String)
  • options (Hash) (defaults to: {})

    used to pass in file attributes

Raises:

See Also:



85
86
87
88
89
90
91
92
93
# File 'lib/fog/rackspace/models/storage/file.rb', line 85

def copy(target_directory_key, target_file_key, options={})
  requires :directory, :key
  options['Content-Type'] ||= content_type if content_type
  options['Access-Control-Allow-Origin'] ||= access_control_allow_origin if access_control_allow_origin
  options['Origin'] ||= origin if origin
  service.copy_object(directory.key, key, target_directory_key, target_file_key, options)
  target_directory = service.directories.new(:key => target_directory_key)
  target_directory.files.get(target_file_key)
end

#destroyBoolean

Destroy the file



102
103
104
105
106
# File 'lib/fog/rackspace/models/storage/file.rb', line 102

def destroy
  requires :directory, :key
  service.delete_object(directory.key, key)
  true
end

#ios_urlString

URL used to stream video to iOS devices without needing to convert your video



187
188
189
# File 'lib/fog/rackspace/models/storage/file.rb', line 187

def ios_url
  Files::file_url directory.ios_url, key
end

#metadataFog::Storage::Rackspace::Metadata

File metadata

Returns:



121
122
123
# File 'lib/fog/rackspace/models/storage/file.rb', line 121

def 
  attributes[:metadata] ||= Fog::Storage::Rackspace::Metadata.new(self)
end

#metadata=(hash) ⇒ Object

Set file metadata

Parameters:



110
111
112
113
114
115
116
117
# File 'lib/fog/rackspace/models/storage/file.rb', line 110

def metadata=(hash)
  if hash.is_a? Fog::Storage::Rackspace::Metadata
    attributes[:metadata] = hash
  else
    attributes[:metadata] = Fog::Storage::Rackspace::Metadata.new(self, hash)
  end
  attributes[:metadata]
end

#owner=(new_owner) ⇒ Object

Required for compatibility with other Fog providers. Not Used.



126
127
128
129
130
131
132
133
# File 'lib/fog/rackspace/models/storage/file.rb', line 126

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

#public?Boolean

Is file published to CDN

Returns:

  • (Boolean)

    return true if published to CDN

Raises:



159
160
161
# File 'lib/fog/rackspace/models/storage/file.rb', line 159

def public?
  directory.public?
end

#public_urlString

Returns the public url for the file. If the file has not been published to the CDN, this method will return nil as it is not publically accessible. This method will return the approprate url in the following order:

  1. If the service used to access this file was created with the option :rackspace_cdn_ssl => true, this method will return the SSL-secured URL.

  2. If the directory’s cdn_cname attribute is populated this method will return the cname.

  3. return the default CDN url.



176
177
178
# File 'lib/fog/rackspace/models/storage/file.rb', line 176

def public_url
  Files::file_url directory.public_url, key
end

#purge_from_cdnObject

Note:

You may only PURGE up to 25 objects per day. Any attempt to purge more than this will result in a 498 status code error (Rate Limited).

Immediately purge file from the CDN network



209
210
211
212
213
214
215
# File 'lib/fog/rackspace/models/storage/file.rb', line 209

def purge_from_cdn
  if public?
    service.cdn.purge(self)
  else
    false
  end
end

#save(options = {}) ⇒ Object

Create or updates file and associated metadata



224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
# File 'lib/fog/rackspace/models/storage/file.rb', line 224

def save(options = {})
  requires :body, :directory, :key
  options['Content-Type'] = content_type if content_type
  options['Access-Control-Allow-Origin'] = access_control_allow_origin if access_control_allow_origin
  options['Origin'] = origin if origin
  options['Content-Disposition'] = content_disposition if content_disposition
  options['Etag'] = etag if etag
  options.merge!(.to_headers)

  data = service.put_object(directory.key, key, body, options)
  update_attributes_from(data)
  
  self.content_length = Fog::Storage.get_body_size(body)
  self.content_type ||= Fog::Storage.get_content_type(body)
  true
end

#streaming_urlString

URL used to stream resources



198
199
200
# File 'lib/fog/rackspace/models/storage/file.rb', line 198

def streaming_url
  Files::file_url directory.streaming_url, key
end