Class: Fog::Storage::Rackspace::File
- Defined in:
- lib/fog/rackspace/models/storage/file.rb
Instance Attribute Summary collapse
-
#access_control_allow_origin ⇒ String
A space delimited list of URLs allowed to make Cross Origin Requests.
-
#content_length ⇒ Integer
readonly
The content length of the file.
-
#content_type ⇒ String
The MIME Media Type of the file.
-
#directory ⇒ Fog::Storage::Rackspace::Directory
Directory containing file.
-
#etag ⇒ String
The MD5 checksum of file.
-
#key ⇒ String
readonly
The name of the file.
-
#last_modified ⇒ Time
The last time the file was modified.
-
#origin ⇒ String
The origin is the URI of the object’s host.
- #public ⇒ Object writeonly
Attributes inherited from Model
Instance Method Summary collapse
-
#body ⇒ Object
Returns the body/contents of file.
-
#body=(new_body) ⇒ Object
Sets the body/contents of file.
-
#copy(target_directory_key, target_file_key, options = {}) ⇒ Object
Copy file to another directory or directory.
-
#destroy ⇒ Boolean
Destroy the file.
-
#ios_url ⇒ String
URL used to stream video to iOS devices without needing to convert your video.
-
#metadata ⇒ Fog::Storage::Rackspace::Metadata
File metadata.
-
#metadata=(hash) ⇒ Object
Set file metadata.
-
#owner=(new_owner) ⇒ Object
Required for compatibility with other Fog providers.
-
#public? ⇒ Boolean
Is file published to CDN.
-
#public_url ⇒ String
Returns the public url for the file.
-
#purge_from_cdn ⇒ Object
Immediately purge file from the CDN network.
-
#save(options = {}) ⇒ Object
Create or updates file and associated metadata.
-
#streaming_url ⇒ String
URL used to stream resources.
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_origin ⇒ String
A space delimited list of URLs allowed to make Cross Origin Requests. Format is www.example.com. An asterisk (*) allows all.
38 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 38 attribute :access_control_allow_origin, :aliases => ['Access-Control-Allow-Origin'] |
#content_length ⇒ Integer (readonly)
Returns 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_type ⇒ String
Returns The MIME Media Type of the file.
20 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 20 attribute :content_type, :aliases => ['content_type', 'Content-Type'] |
#directory ⇒ Fog::Storage::Rackspace::Directory
Returns directory containing file.
47 48 49 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 47 def directory @directory end |
#etag ⇒ String
The MD5 checksum of file. If included file creation request, will ensure integrity of the file.
27 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 27 attribute :etag, :aliases => ['hash', 'Etag'] |
#key ⇒ String (readonly)
Returns The name of the file.
11 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 11 identity :key, :aliases => 'name' |
#last_modified ⇒ 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 |
#origin ⇒ String
Returns The origin is the URI of the object’s host.
43 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 43 attribute :origin, :aliases => ['Origin'] |
#public=(value) ⇒ Object (writeonly)
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
#body ⇒ Object
Returns the body/contents of file
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
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
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, ={}) requires :directory, :key ['Content-Type'] ||= content_type if content_type ['Access-Control-Allow-Origin'] ||= access_control_allow_origin if access_control_allow_origin ['Origin'] ||= origin if origin service.copy_object(directory.key, key, target_directory_key, target_file_key, ) target_directory = service.directories.new(:key => target_directory_key) target_directory.files.get(target_file_key) end |
#destroy ⇒ Boolean
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_url ⇒ String
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 |
#metadata ⇒ Fog::Storage::Rackspace::Metadata
File metadata
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
110 111 112 113 114 115 116 117 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 110 def (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
159 160 161 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 159 def public? directory.public? end |
#public_url ⇒ String
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:
-
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.
-
If the directory’s cdn_cname attribute is populated this method will return the cname.
-
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_cdn ⇒ Object
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( = {}) requires :body, :directory, :key ['Content-Type'] = content_type if content_type ['Access-Control-Allow-Origin'] = access_control_allow_origin if access_control_allow_origin ['Origin'] = origin if origin ['Content-Disposition'] = content_disposition if content_disposition ['Etag'] = etag if etag .merge!(.to_headers) data = service.put_object(directory.key, key, body, ) update_attributes_from(data) self.content_length = Fog::Storage.get_body_size(body) self.content_type ||= Fog::Storage.get_content_type(body) true end |