class ActiveAdmin::AsyncExporter::Services::AwsS3Service

Attributes

bucket[RW]
file[RW]
object[RW]
s3[RW]

Public Class Methods

new(file) click to toggle source
# File lib/active_admin/async_exporter/services/aws_s3_service.rb, line 9
def initialize(file)
  @file = file
  @s3 = Aws::S3::Resource.new
  @bucket = s3.bucket(ActiveAdmin::AsyncExporter.config.aws_bucket_name)
end

Public Instance Methods

delete() click to toggle source
# File lib/active_admin/async_exporter/services/aws_s3_service.rb, line 25
def delete
  bucket.delete_objects({ delete: { objects: [{ key: filename }] } })
end
store() click to toggle source
# File lib/active_admin/async_exporter/services/aws_s3_service.rb, line 15
def store
  @object = bucket.object(filename)
  object.upload_file(Pathname.new(file[:path]), { acl: 'public-read' })
  self
end
url() click to toggle source
# File lib/active_admin/async_exporter/services/aws_s3_service.rb, line 21
def url
  object.public_url.to_s
end

Private Instance Methods

bucket_folder() click to toggle source
# File lib/active_admin/async_exporter/services/aws_s3_service.rb, line 35
def bucket_folder
  path = ActiveAdmin::AsyncExporter.config.aws_bucket_folder_path
  return '' if path.blank?

  "#{path}/"
end
filename() click to toggle source
# File lib/active_admin/async_exporter/services/aws_s3_service.rb, line 31
def filename
  @filename ||= "#{bucket_folder}#{file[:name]}"
end