Class: Fog::Storage::Dropbox::File

Inherits:
Model
  • Object
show all
Defined in:
lib/fog/dropbox/models/storage/file.rb

Instance Method Summary collapse

Instance Method Details

#bodyObject



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

#destroyObject



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

#directoryObject



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(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

#urlObject



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