class Attachie::S3Driver
Attributes
s3_client[RW]
s3_resource[RW]
Public Class Methods
new(s3_client)
click to toggle source
# File lib/attachie/s3_driver.rb, line 57 def initialize(s3_client) self.s3_client = s3_client self.s3_resource = Aws::S3::Resource.new(client: s3_client) end
Public Instance Methods
delete(name, bucket)
click to toggle source
# File lib/attachie/s3_driver.rb, line 121 def delete(name, bucket) s3_resource.bucket(bucket).object(name).delete end
download(name, bucket, path)
click to toggle source
# File lib/attachie/s3_driver.rb, line 117 def download(name, bucket, path) s3_resource.bucket(bucket).object(name).download_file(path) end
exists?(name, bucket)
click to toggle source
# File lib/attachie/s3_driver.rb, line 125 def exists?(name, bucket) s3_resource.bucket(bucket).object(name).exists? end
info(name, bucket)
click to toggle source
# File lib/attachie/s3_driver.rb, line 79 def info(name, bucket) object = s3_resource.bucket(bucket).object(name) { content_length: object.content_length, last_modified: object.last_modified, content_type: object.content_type } end
list(bucket, prefix: nil) { |key| ... }
click to toggle source
# File lib/attachie/s3_driver.rb, line 68 def list(bucket, prefix: nil) return enum_for(:list, bucket, prefix: prefix) unless block_given? options = {} options[:prefix] = prefix if prefix s3_resource.bucket(bucket).objects(options).each do |object| yield object.key end end
presigned_post(name, bucket, options = {})
click to toggle source
# File lib/attachie/s3_driver.rb, line 62 def presigned_post(name, bucket, options = {}) res = s3_resource.bucket(bucket).object(name).presigned_post(options) return { fields: res.fields, headers: {}, method: "post", url: res.url } end
store(name, data_or_io, bucket, options = {})
click to toggle source
# File lib/attachie/s3_driver.rb, line 89 def store(name, data_or_io, bucket, options = {}) opts = options.dup mime_type = MIME::Types.of(name).first opts[:content_type] ||= mime_type.content_type if mime_type opts[:content_type] ||= "application/octet-stream" opts[:body] = data_or_io s3_resource.bucket(bucket).object(name).put(opts) end
store_multipart(name, bucket, options = {}, &block)
click to toggle source
# File lib/attachie/s3_driver.rb, line 102 def store_multipart(name, bucket, options = {}, &block) opts = options.dup mime_type = MIME::Types.of(name).first opts[:content_type] ||= mime_type.content_type if mime_type opts[:content_type] ||= "application/octet-stream" S3MultipartUpload.new(s3_client, name, bucket, opts, &block) end
temp_url(name, bucket, options = {})
click to toggle source
# File lib/attachie/s3_driver.rb, line 129 def temp_url(name, bucket, options = {}) opts = options.dup opts[:expires_in] = opts.delete(:expires_in).to_i if opts.key?(:expires_in) method = opts.delete(:method) || :get s3_resource.bucket(bucket).object(name).presigned_url(method, opts) end
value(name, bucket)
click to toggle source
# File lib/attachie/s3_driver.rb, line 113 def value(name, bucket) s3_resource.bucket(bucket).object(name).get.body.read.force_encoding(Encoding::BINARY) end