class Upcloudify::S3

Public Class Methods

new(options = { aws_access_key_id: Upcloudify::S3.configuration.aws_access_key_id, aws_secret_access_key: Upcloudify::S3.configuration.aws_secret_access_key, aws_directory: Upcloudify::S3.configuration.aws_directory, aws_region: Upcloudify::S3.configuration.aws_region }) click to toggle source
# File lib/upcloudify.rb, line 39
def initialize(options = {
    aws_access_key_id: Upcloudify::S3.configuration.aws_access_key_id,
    aws_secret_access_key: Upcloudify::S3.configuration.aws_secret_access_key,
    aws_directory: Upcloudify::S3.configuration.aws_directory,
    aws_region: Upcloudify::S3.configuration.aws_region
})
  raise ArgumentError, "aws_access_key_id is required" unless options[:aws_access_key_id]
  raise ArgumentError, "aws_secret_access_key is required" unless options[:aws_secret_access_key]
  raise ArgumentError, "aws_directory is required" unless options[:aws_directory]
  @id = options[:aws_access_key_id]
  @secret = options[:aws_secret_access_key]
  @directory = options[:aws_directory]
  @region = options[:aws_region]
end

Public Instance Methods

cloud(connection = Fog::Storage.new( :provider => 'AWS', :aws_secret_access_key => @secret, :aws_access_key_id => @id, :region => @region ) ) click to toggle source

Connects to Amazon S3 using stored credentials Returns an object handle for the S3 bucket-directory

# File lib/upcloudify.rb, line 56
def cloud(connection = Fog::Storage.new(
    :provider                 => 'AWS',
    :aws_secret_access_key    => @secret,
    :aws_access_key_id        => @id,
    :region                   => @region
  )
)
  directory = connection.directories.get(@directory)
  directory.files
end
email(email_address, filename, attachment, options = { suffix: "", expiration: (Date.today + 7).to_time, from: 'upcloudify', subject: 'your file is attached', body: 'your report is linked ' } ) click to toggle source

Uploads a file to S3 and emails a link to the file. Returns nothing.

# File lib/upcloudify.rb, line 83
def email(email_address,
  filename,
  attachment,
  options = {
    suffix: "",
    expiration: (Date.today + 7).to_time,
    from: 'upcloudify',
    subject: 'your file is attached',
    body: 'your report is linked '
  }
)

  suffix = options[:suffix]
  expiration = options[:expiration]
  file = upload((filename.to_s + suffix.to_s), attachment)

  Pony.mail to: email_address,
    from: options[:from],
    subject: options[:subject],
    body: (options[:body] || '') + file.url(expiration) + ' '

end
upload(filename, data) click to toggle source

Uploads data into Amazon S3 Returns an object representing the uploaded file

# File lib/upcloudify.rb, line 69
def upload(filename, data)
  filename.gsub!(/\//, '-') # replace slashes with dashes
  filename.gsub!(/^\-|\-$/, '') # remove leading and trailing dashes

  file = cloud.create(
    :key    => "#{filename}.zip",
    :body   => Zippy.new("#{filename}" => data).data,
    :public => false
  )
  file
end