class Notebook::StorageAdapters::S3

Attributes

s3_file_key[R]

Public Class Methods

new(attachment, options = {}) click to toggle source
Calls superclass method Notebook::StorageAdapters::Base::new
# File lib/notebook/storage_adapters/s3.rb, line 19
def initialize(attachment, options = {})
  super
  #--
  check_valid_credentials
  setup_s3
end

Public Instance Methods

delete() click to toggle source
# File lib/notebook/storage_adapters/s3.rb, line 26
def delete
  @bucket.object(@s3_file_key).delete
end
upload() click to toggle source
# File lib/notebook/storage_adapters/s3.rb, line 30
def upload
  @s3_file_key = "#{SecureRandom.uuid}/#{File.basename(attachment.file)}"
  @file_object = @bucket.object(@s3_file_key)
  @file_object.upload_file(attachment.file.path)
end
url() click to toggle source
# File lib/notebook/storage_adapters/s3.rb, line 36
def url
  @bucket.object(@s3_file_key).presigned_url(:get)
end

Private Instance Methods

check_valid_credentials() click to toggle source
# File lib/notebook/storage_adapters/s3.rb, line 42
def check_valid_credentials
  credentials = Notebook.s3_options
  required_credential_keys = [:access_key_id, :bucket, :region, :secret_access_key]
  contains_credentials = required_credential_keys.all? { |k| credentials.key?(k) }

  return if contains_credentials
  fail 'Proper credentials are not defined'
end
setup_s3() click to toggle source
# File lib/notebook/storage_adapters/s3.rb, line 51
def setup_s3
  @s3_options = Notebook.s3_options
  @credentials = Aws::Credentials.new(@s3_options[:access_key_id], @s3_options[:secret_access_key])
  @s3 = Aws::S3::Resource.new(credentials: @credentials, region: @s3_options[:region])
  @bucket = @s3.bucket(@s3_options[:bucket])
end