Class: Fog::Storage::Dropbox::File
- Inherits:
-
Model
- Object
- Model
- Fog::Storage::Dropbox::File
- Defined in:
- lib/fog/dropbox/models/storage/file.rb
Instance Method Summary collapse
- #body ⇒ Object
- #body=(new_body) ⇒ Object
- #destroy ⇒ Object
- #directory ⇒ Object
- #save(options = {}) ⇒ Object
- #url ⇒ Object
Instance Method Details
#body ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/fog/dropbox/models/storage/file.rb', line 16 def body attributes[:body] ||= if last_modified && (file = collection.get(identity)) service.client.get_file(key) else '' end end |
#body=(new_body) ⇒ Object
24 25 26 |
# File 'lib/fog/dropbox/models/storage/file.rb', line 24 def body=(new_body) attributes[:body] = new_body end |
#destroy ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/fog/dropbox/models/storage/file.rb', line 32 def destroy requires :key begin service.client.file_delete(key) rescue DropboxError end true end |
#directory ⇒ Object
28 29 30 |
# File 'lib/fog/dropbox/models/storage/file.rb', line 28 def directory @directory end |
#save(options = {}) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/fog/dropbox/models/storage/file.rb', line 41 def save( = {}) requires :body, :directory, :key if body.is_a? String service.client.put_file(key, body, true) # true means overwrite else local_file_size = Fog::Storage.get_body_size(body) uploader = service.client.get_chunked_uploader(body, local_file_size) retries = 0 chunk_size = 4 * (1024**2) # 4 MB while uploader.offset < uploader.total_size begin uploader.upload(chunk_size) rescue DropboxError => e if retries > 10 break end retries += 1 end end uploader.finish(key, true) # true means overwrite end end |
#url ⇒ Object
64 65 66 67 68 69 70 71 72 73 |
# File 'lib/fog/dropbox/models/storage/file.rb', line 64 def url() requires :key share = service.client.shares(key) url = share['url'] r = Net::HTTP.get_response(URI.parse(url)) if r.code == "302" url = r.header['location'] end url.gsub "dl=0", "dl=1" end |