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_encodingString

Returns The content encoding of the file.



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

attribute :content_encoding, :aliases => 'Content-Encoding'

#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']

#delete_afterInteger

A number of seconds representing how long from now this object will be automatically deleted.

Returns:

  • (Integer)

    the number of seconds until this object will be automatically deleted

See Also:



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

attribute :delete_after, :aliases => ['X-Delete-After']

#delete_atInteger

A Unix Epoch Timestamp, in integer form, representing the time when this object will be automatically deleted.

Returns:

  • (Integer)

    the unix epoch timestamp of when this object will be automatically deleted

See Also:



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

attribute :delete_at, :aliases => ['X-Delete-At']

#directoryFog::Storage::Rackspace::Directory

Returns directory containing file.

Returns:



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

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.



68
69
70
# File 'lib/fog/rackspace/models/storage/file.rb', line 68

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:



79
80
81
82
83
84
85
# File 'lib/fog/rackspace/models/storage/file.rb', line 79

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:



89
90
91
# File 'lib/fog/rackspace/models/storage/file.rb', line 89

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:



102
103
104
105
106
107
108
109
110
111
# File 'lib/fog/rackspace/models/storage/file.rb', line 102

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
  options['Content-Encoding'] ||= content_encoding if content_encoding
  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



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

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



224
225
226
# File 'lib/fog/rackspace/models/storage/file.rb', line 224

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

#metadataFog::Storage::Rackspace::Metadata

File metadata

Returns:



139
140
141
# File 'lib/fog/rackspace/models/storage/file.rb', line 139

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

#metadata=(hash) ⇒ Object

Set file metadata

Parameters:



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

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.



144
145
146
147
148
149
150
151
# File 'lib/fog/rackspace/models/storage/file.rb', line 144

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:



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

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.



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

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



246
247
248
249
250
251
252
# File 'lib/fog/rackspace/models/storage/file.rb', line 246

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

#save(options = {}) ⇒ Object

Create or updates file and associated metadata



261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
# File 'lib/fog/rackspace/models/storage/file.rb', line 261

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['Content-Encoding'] = content_encoding if content_encoding
  options['X-Delete-At'] = delete_at if delete_at
  options['X-Delete-After'] = delete_after if delete_after
  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



235
236
237
# File 'lib/fog/rackspace/models/storage/file.rb', line 235

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

#url(expires, options = {}) ⇒ String

Note:

This URL does not use the Rackspace CDN

Get a url for file.

required attributes: key

Parameters:

  • expires (String)

    number of seconds (since 1970-01-01 00:00) before url expires

  • options (Hash) (defaults to: {})

Returns:



191
192
193
194
195
196
197
198
# File 'lib/fog/rackspace/models/storage/file.rb', line 191

def url(expires, options = {})
  requires :key
  if service.ssl?
    service.get_object_https_url(directory.key, key, expires, options)
  else
    service.get_object_http_url(directory.key, key, expires, options)
  end
end