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