module AwsS3
Constants
- S3_BUCKET
- S3_FOLDER
- S3_REGION
Public Class Methods
bucket()
click to toggle source
# File lib/aws_s3.rb, line 15 def bucket @bucket ||= resource.bucket(S3_BUCKET) end
client()
click to toggle source
# File lib/aws_s3.rb, line 11 def client @client ||= Aws::S3::Client.new(region: S3_REGION) end
copy(source_key, target_key)
click to toggle source
An intra bucket copy
# File lib/aws_s3.rb, line 24 def copy(source_key, target_key) client.copy_object(bucket: S3_BUCKET, copy_source: S3_BUCKET + '/' + source_key, key: target_key) end
object(key)
click to toggle source
# File lib/aws_s3.rb, line 19 def object(key) bucket.object(key) end
pipe_reader(s3_key)
click to toggle source
# File lib/aws_s3.rb, line 51 def pipe_reader(s3_key) bucket = Aws::S3::Resource.new(region: S3_REGION).bucket(S3_BUCKET) reader, writer = IO.pipe writer.instance_eval('undef :rewind') writer.binmode() t = Thread.new do bucket.object(s3_key).get(response_target: writer) writer.close end t.abort_on_exception = true reader end
presigned_url(key, filename, expires_in)
click to toggle source
# File lib/aws_s3.rb, line 32 def presigned_url(key, filename, expires_in) Pester.s3.retry do obj = object(key) if obj.exists? obj.presigned_url(:get, response_content_disposition: "attachment; filename=#{filename}", expires_in: expires_in) else nil end end end
resource()
click to toggle source
# File lib/aws_s3.rb, line 7 def resource @resource ||= Aws::S3::Resource.new(region: S3_REGION) end
s3_enabled?()
click to toggle source
# File lib/aws_s3.rb, line 28 def s3_enabled? S3_REGION.present? && S3_BUCKET.present? end
store(key, filepath)
click to toggle source
# File lib/aws_s3.rb, line 43 def store(key, filepath) Pester.s3.retry do obj = AwsS3.object(key) obj.upload_file(filepath) end end