class Fog::Storage::Dropbox::File

Public Instance Methods

body() click to toggle source
# 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) click to toggle source
# File lib/fog/dropbox/models/storage/file.rb, line 24
def body=(new_body)
  attributes[:body] = new_body
end
destroy() click to toggle source
# 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() click to toggle source
# File lib/fog/dropbox/models/storage/file.rb, line 28
def directory
  @directory
end
save(options = {}) click to toggle source
# File lib/fog/dropbox/models/storage/file.rb, line 41
def save(options = {})
  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() click to toggle source
# 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