Class: Fog::Storage::InternetArchive::File
- Inherits:
-
Model
- Object
- Model
- Fog::Storage::InternetArchive::File
- Extended by:
- Fog::Storage::IAAttributes::ClassMethods
- Defined in:
- lib/fog/internet_archive/models/storage/file.rb
Instance Attribute Summary collapse
-
#body ⇒ File
Get file’s body if exists, else ‘ ’.
- #multipart_chunk_size ⇒ Object
Instance Method Summary collapse
-
#acl ⇒ Object
acl for internet archive is always public-read.
- #acl=(new_acl) ⇒ Object
-
#copy(target_directory_key, target_file_key, options = {}) ⇒ String
Copy object from one bucket to other bucket.
-
#destroy(options = {}) ⇒ Boolean
Destroy file via http DELETE.
-
#directory ⇒ Fog::InternetArchive::Storage::Directory
Get the file instance’s directory.
- #metadata ⇒ Object
- #metadata=(new_metadata) ⇒ Object
- #owner=(new_owner) ⇒ Object
-
#public=(new_public) ⇒ String
Set Access-Control-List permissions.
-
#public_url ⇒ String
Get publicly acessible url via http GET.
-
#save(options = {}) ⇒ Boolean
Save file with body as contents to directory.key with name key via http PUT.
-
#url(expires, options = {}) ⇒ String
Get a url for file.
Methods included from Fog::Storage::IAAttributes::ClassMethods
Methods included from Fog::Storage::IAAttributes::InstanceMethods
Instance Attribute Details
#body ⇒ File
Get file’s body if exists, else ‘ ’.
58 59 60 61 62 63 64 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 58 def body attributes[:body] ||= if last_modified && (file = collection.get(identity)) file.body else '' end end |
#multipart_chunk_size ⇒ Object
Chunk size to use for multipart uploads. Use small chunk sizes to minimize memory. E.g. 5242880 = 5mb
15 16 17 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 15 def multipart_chunk_size @multipart_chunk_size end |
Instance Method Details
#acl ⇒ Object
acl for internet archive is always public-read
46 47 48 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 46 def acl 'public-read' end |
#acl=(new_acl) ⇒ Object
50 51 52 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 50 def acl=(new_acl) 'public-read' end |
#copy(target_directory_key, target_file_key, options = {}) ⇒ String
Copy object from one bucket to other bucket.
required attributes: directory, key
92 93 94 95 96 97 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 92 def copy(target_directory_key, target_file_key, = {}) requires :directory, :key service.copy_object(directory.key, key, target_directory_key, target_file_key, ) target_directory = service.directories.new(:key => target_directory_key) target_directory.files.head(target_file_key) end |
#destroy(options = {}) ⇒ Boolean
Destroy file via http DELETE.
required attributes: directory, key
106 107 108 109 110 111 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 106 def destroy( = {}) requires :directory, :key ['x-archive-cascade-delete'] = cascade_delete if cascade_delete service.delete_object(directory.key, key, ) true end |
#directory ⇒ Fog::InternetArchive::Storage::Directory
Get the file instance’s directory.
79 80 81 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 79 def directory @directory end |
#metadata ⇒ Object
114 115 116 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 114 def attributes.reject {|key, value| !(key.to_s =~ /^x-(amz||archive)-meta/)} end |
#metadata=(new_metadata) ⇒ Object
119 120 121 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 119 def () merge_attributes() end |
#owner=(new_owner) ⇒ Object
124 125 126 127 128 129 130 131 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 124 def owner=(new_owner) if new_owner attributes[:owner] = { :display_name => new_owner['DisplayName'], :id => new_owner['ID'] } end end |
#public=(new_public) ⇒ String
Set Access-Control-List permissions.
valid new_publics: public_read, private
140 141 142 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 140 def public=(new_public) 'public-read' end |
#public_url ⇒ String
Get publicly acessible url via http GET.
required attributes: directory, key
150 151 152 153 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 150 def public_url requires :directory, :key "http://#{Fog::InternetArchive::DOMAIN_NAME}/download/#{directory.key}/#{Fog::InternetArchive.escape(key)}".gsub('%2F','/') end |
#save(options = {}) ⇒ Boolean
Save file with body as contents to directory.key with name key via http PUT
required attributes: body, directory, key
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 170 def save( = {}) requires :body, :directory, :key if != {} Fog::Logger.deprecation("options param is deprecated [light_black](#{caller.first})[/]") end ['Cache-Control'] = cache_control if cache_control ['Content-Disposition'] = content_disposition if content_disposition ['Content-Encoding'] = content_encoding if content_encoding ['Content-MD5'] = content_md5 if content_md5 ['Content-Type'] = content_type if content_type ['Expires'] = expires if expires .merge!() ['x-archive-auto-make-bucket'] = auto_make_bucket if auto_make_bucket ['x-archive-interactive-priority'] = interactive_priority if interactive_priority ['x-archive-keep-old-version'] = keep_old_version if keep_old_version ['x-archive-queue-derive'] = queue_derive if queue_derive ['x-archive-size-hint'] = size_hint.to_i.to_s if size_hint (:collections, ) (:subjects, ) if multipart_chunk_size && body.respond_to?(:read) data = multipart_save() merge_attributes(data.body) else data = service.put_object(directory.key, key, body, ) merge_attributes(data.headers.reject {|key, value| ['Content-Length', 'Content-Type'].include?(key)}) end self.etag.gsub!('"','') if self.etag self.content_length = Fog::Storage.get_body_size(body) self.content_type ||= Fog::Storage.get_content_type(body) true end |
#url(expires, options = {}) ⇒ String
Get a url for file.
required attributes: key
213 214 215 216 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 213 def url(expires, = {}) requires :key collection.get_url(key, expires, ) end |