41 lines
931 B
Ruby
41 lines
931 B
Ruby
module Carto
|
|
module StorageOptions
|
|
class S3
|
|
def self.conf
|
|
Cartodb.get_config(:aws, 's3')
|
|
end
|
|
|
|
def self.enabled?
|
|
conf.try(:any?) ? true : false
|
|
end
|
|
|
|
def initialize(bucket_name)
|
|
@bucket_name = bucket_name
|
|
|
|
Aws.config = self.class.conf.symbolize_keys
|
|
end
|
|
|
|
def upload(namespace, file)
|
|
filename = Pathname.new(file.path).basename.to_s
|
|
mime_type = MIME::Types.type_for(filename).first.to_s
|
|
identifier = File.join(namespace, filename)
|
|
|
|
s3_object = bucket.object(identifier)
|
|
s3_object.upload_file(file.path, acl: 'public-read', content_type: mime_type)
|
|
|
|
[identifier, s3_object.public_url(secure: true).to_s]
|
|
end
|
|
|
|
def remove(path)
|
|
bucket.object(path).delete
|
|
end
|
|
|
|
private
|
|
|
|
def bucket
|
|
@bucket ||= Aws::S3::Resource.new.bucket(@bucket_name)
|
|
end
|
|
end
|
|
end
|
|
end
|