class Attach::S3::Backend

Public Instance Methods

delete(attachment) click to toggle source
# File lib/attach/s3/backend.rb, line 24
def delete(attachment)
  s3 = setup_s3_request
  path = path_for_attachment(attachment)

  s3.bucket(@config[:bucket]).object(path).delete
end
read(attachment) click to toggle source
# File lib/attach/s3/backend.rb, line 9
def read(attachment)
  s3 = setup_s3_request
  path = path_for_attachment(attachment)

  resp = s3.bucket(@config[:bucket]).object(path).get
  resp.body.read
end
write(attachment, data) click to toggle source
# File lib/attach/s3/backend.rb, line 17
def write(attachment, data)
  s3 = setup_s3_request
  path = path_for_attachment(attachment)

  s3.bucket(@config[:bucket]).object(path).put(body: attachment.binary)
end

Private Instance Methods

path_for_attachment(attachment) click to toggle source
# File lib/attach/s3/backend.rb, line 42
def path_for_attachment(attachment)
  ::File.join("attachments", attachment.token[0,2], attachment.token[2,2], attachment.token[4,40], attachment.file_name)
end
setup_s3_request() click to toggle source
# File lib/attach/s3/backend.rb, line 33
def setup_s3_request
  Aws.config.update({
    region: @config[:region],
    credentials: Aws::Credentials.new(@config[:access_key], @config[:secret_access_key])
  })

  Aws::S3::Resource.new
end