class AwsAdapter

Constants

DEFAULT_REGION

Public Class Methods

new(config) click to toggle source
# File lib/s3_adapters/aws_adapter.rb, line 8
def initialize(config)
  @config = config
  @connected = false
  @bucket = nil
end

Public Instance Methods

delete(file_name) click to toggle source
# File lib/s3_adapters/aws_adapter.rb, line 47
def delete(file_name)
  ensure_connected
  @bucket.objects[file_name].delete
end
ensure_connected() click to toggle source
# File lib/s3_adapters/aws_adapter.rb, line 14
def ensure_connected
  return if @connected
  client = AWS::S3.new(:access_key_id => @config[:access_key_id],
    :secret_access_key => @config[:secret_access_key])

  begin
    create_bucket(client)
    @connected = true
  rescue Exception => e
    puts "Unable to create bucket -- #{e}"
    @connected = false
  end
end
fetch(file_name) click to toggle source
# File lib/s3_adapters/aws_adapter.rb, line 34
def fetch(file_name)
  ensure_connected
  file = Tempfile.new("temp")
  bucket_object = @bucket.objects[file_name]

  File.open(file.path, 'wb') do |f|
    bucket_object.read do |chunk|
      f.write chunk
    end
  end
  return file
end
store(file_name, file) click to toggle source
# File lib/s3_adapters/aws_adapter.rb, line 28
def store(file_name, file)
  ensure_connected
  bucket_object = @bucket.objects[file_name]
  bucket_object.write(Pathname.new(file.path))
end

Private Instance Methods

create_bucket(client) click to toggle source

TODO move to abstract class

# File lib/s3_adapters/aws_adapter.rb, line 55
def create_bucket(client)
  if @bucket.nil?
    bucket_name = System.clean("#{System.db_credentials['database'].downcase}-ON-#{System.hostname.downcase}")
    @bucket = client.buckets[bucket_name]
    @bucket = client.buckets.create(bucket_name) if !@bucket.exists?
  end
  @bucket
end