blob: 0c4d44e4bf3058b2597fc93c68c4f1b631614d75 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
class BlobStorage
attr_reader :bucket_name
def initialize(bucket_name = ENV['FOG_DIRECTORY'])
@bucket_name = bucket_name
end
def upload(key, file)
Rails.logger.info "uploading to #{bucket_name}/#{key}"
object = object_for(key)
object.write(Pathname.new(file), options_for(file))
object.acl = :public_read
end
def download(key)
object = object_for(key)
File.open("#{Dir.tmpdir}/#{File.basename(key)}", "wb") do |tempfile|
object.read do |chunk|
tempfile.write(chunk)
end
yield tempfile
end
end
private
def object_for(key)
connection.buckets[bucket_name].objects[key]
end
def connection
@connection ||= AWS::S3.new
end
def content_type_for(file)
::MIME::Types.type_for(file).first.to_s
end
def options_for(file)
{
content_type: content_type_for(file),
cache_control: 'public, max-age=315576000',
}
end
class Fake
def upload(*args)
end
def downlaod(*args)
end
end
end
|