class EXEL::S3::S3Provider

Public Class Methods

remote?(uri) click to toggle source
# File lib/exel/s3/s3_provider.rb, line 37
def self.remote?(uri)
  uri =~ %r{s3://}
end

Public Instance Methods

download(uri) click to toggle source
# File lib/exel/s3/s3_provider.rb, line 15
def download(uri)
  filename = uri.partition('://').last
  obj = get_object(filename)
  file = Tempfile.new(filename, encoding: Encoding::ASCII_8BIT)
  obj.get(response_target: file)
  file.set_encoding(Encoding::UTF_8)
  file
rescue Aws::S3::Errors::NoSuchKey => e
  raise EXEL::Error::JobTermination, "Aws::S3::Errors::NoSuchKey: #{e.message}"
end
get_object(filename) click to toggle source
# File lib/exel/s3/s3_provider.rb, line 26
def get_object(filename)
  s3 = Aws::S3::Resource.new(
    credentials: Aws::Credentials.new(
      EXEL.configuration.aws.access_key_id,
      EXEL.configuration.aws.secret_access_key
    ),
    region: EXEL.configuration.s3_region || 'us-east-1'
  )
  s3.bucket(EXEL.configuration.s3_bucket).object(filename)
end
upload(file) click to toggle source
# File lib/exel/s3/s3_provider.rb, line 6
def upload(file)
  filename = get_filename(file)
  obj = get_object(filename)
  obj.upload_file(file)
  file.close

  "s3://#{filename}"
end

Private Instance Methods

get_filename(file) click to toggle source
# File lib/exel/s3/s3_provider.rb, line 43
def get_filename(file)
  file.path.split('/').last
end