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
readonly
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 (readonly)
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
58 59 60 61 62 63 64 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 58 def body attributes[:body] ||= if last_modified collection.get(identity).body else '' end end |
#body=(new_body) ⇒ Object
Sets the body/contents of file
68 69 70 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 68 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
77 78 79 80 81 82 83 84 85 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 77 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
90 91 92 93 94 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 90 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
145 146 147 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 145 def ios_url Files::file_url directory.ios_url, key end |
#metadata ⇒ Fog::Storage::Rackspace::Metadata
File metadata
109 110 111 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 109 def attributes[:metadata] ||= Fog::Storage::Rackspace::Metadata.new(self) end |
#metadata=(hash) ⇒ Object
Set file metadata
98 99 100 101 102 103 104 105 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 98 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.
114 115 116 117 118 119 120 121 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 114 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
125 126 127 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 125 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:
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.
138 139 140 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 138 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
159 160 161 162 163 164 165 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 159 def purge_from_cdn if public? service.cdn.purge(self) else false end end |
#save(options = {}) ⇒ Object
Create or updates file and associated metadata
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 |
# File 'lib/fog/rackspace/models/storage/file.rb', line 170 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 .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 |