class AwsClient::S3Wrapper

Constants

BUCKET_DEFINITION_FILE
PATH_TO_BUCKETS_DEFINITION

Public Class Methods

new(*params) click to toggle source
Calls superclass method AwsClient::Wrapper::new
# File lib/s3_wrapper.rb, line 7
def initialize(*params)
  super
  @credentials_key = params[0][:credentials_key]
  @aws_region = params[0][:region]
end

Public Instance Methods

bucket_name_for_function(bucket_function) click to toggle source
# File lib/s3_wrapper.rb, line 58
def bucket_name_for_function(bucket_function)
  return "#{bucket_function}.#{@credentials_key}.#{@aws_region}"  
end
bucket_object_for_bucket_prefix(bucket_prefix_code) click to toggle source
# File lib/s3_wrapper.rb, line 17
def bucket_object_for_bucket_prefix(bucket_prefix_code)
  bucket = find_or_create_bucket_for(bucket_prefix_code)
  return bucket.objects.collect{|object| object.object } # 'object.object' The S3 object belonging to the S3 resource
end
bucket_prefixes() click to toggle source
# File lib/s3_wrapper.rb, line 62
def bucket_prefixes
  YAML.load_file(PATH_TO_BUCKETS_DEFINITION)
end
buckets() click to toggle source
# File lib/s3_wrapper.rb, line 48
def buckets
  return resource.buckets
end
find_bucket_by(bucket_name) click to toggle source
# File lib/s3_wrapper.rb, line 22
def find_bucket_by(bucket_name)
  buckets.select{|bucket| bucket.name == bucket_name }.first
end
find_or_create_bucket_for(bucket_prefix_code) click to toggle source
# File lib/s3_wrapper.rb, line 52
def find_or_create_bucket_for(bucket_prefix_code)
  bucket_prefix = bucket_prefixes[bucket_prefix_code]
  full_bucket_name = bucket_name_for_function(bucket_prefix) 
  return find_or_create_bucket(full_bucket_name)
end
resource() click to toggle source
# File lib/s3_wrapper.rb, line 13
def resource
  @resource ||= Aws::S3::Resource.new(client: client)
end
write_file_to_bucket(bucket_prefix_code, file_path) click to toggle source
# File lib/s3_wrapper.rb, line 36
def write_file_to_bucket(bucket_prefix_code, file_path)
  bucket = find_or_create_bucket_for(bucket_prefix_code)
  s3_object = write_to_bucket(bucket, file_path)
  return s3_object
end
write_file_to_explicit_bucket_name(full_bucket_name, file_path) click to toggle source
# File lib/s3_wrapper.rb, line 42
def write_file_to_explicit_bucket_name(full_bucket_name, file_path)
  bucket = find_or_create_bucket(full_bucket_name)
  s3_object = write_to_bucket(bucket, file_path)
  return s3_object
end
write_to_bucket(bucket, file_path) click to toggle source
# File lib/s3_wrapper.rb, line 26
def write_to_bucket(bucket, file_path)
  s3_object = bucket.put_object(
    :key => File.basename(file_path),
    :body => IO.read(file_path)
  )
  puts "\nRemote file"
  puts "#{s3_object.public_url}"
  return s3_object
end

Private Instance Methods

find_or_create_bucket(bucket_name) click to toggle source
# File lib/s3_wrapper.rb, line 68
def find_or_create_bucket(bucket_name)
  begin 
    bucket = resource.create_bucket(:bucket => bucket_name)
  rescue Aws::S3::Errors::BucketAlreadyOwnedByYou
    bucket = find_bucket_by(bucket_name)
  end

  return bucket
end