Class: 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
Attributes inherited from Model
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
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
#body ⇒ File
Get file’s body if exists, else ‘ ’.
61 62 63 64 65 66 67 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 61 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
17 18 19 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 17 def multipart_chunk_size @multipart_chunk_size end |
Instance Method Details
#acl ⇒ Object
acl for internet archive is always public-read
49 50 51 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 49 def acl 'public-read' end |
#acl=(new_acl) ⇒ Object
53 54 55 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 53 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
98 99 100 101 102 103 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 98 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
113 114 115 116 117 118 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 113 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.
84 85 86 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 84 def directory @directory end |
#metadata ⇒ Object
121 122 123 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 121 def attributes.reject {|key, value| !(key.to_s =~ /^x-(amz||archive)-meta/)} end |
#metadata=(new_metadata) ⇒ Object
126 127 128 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 126 def () merge_attributes() end |
#owner=(new_owner) ⇒ Object
132 133 134 135 136 137 138 139 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 132 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
149 150 151 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 149 def public=(new_public) 'public-read' end |
#public_url ⇒ String
Get publicly acessible url via http GET.
required attributes: directory, key
160 161 162 163 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 160 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
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 180 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
224 225 226 227 |
# File 'lib/fog/internet_archive/models/storage/file.rb', line 224 def url(expires, = {}) requires :key collection.get_url(key, expires, ) end |