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