Skip to content

Instantly share code, notes, and snippets.

@loganhasson
Created June 24, 2014 17:02
Show Gist options
  • Save loganhasson/6e1dd7f436c260ead53c to your computer and use it in GitHub Desktop.
Save loganhasson/6e1dd7f436c260ead53c to your computer and use it in GitHub Desktop.
amazon uploader class
class AmazonUploader
attr_reader :category_name, :media_type, :file, :filename, :bucket
def initialize(media_object, file)
@category_name = media_object.category.bucket_name
@media_type = media_object.class.to_s.downcase + "s"
@bucket = 'iron-uploads'
@file = file.tempfile
@filename = file.original_filename
end
def store!
AWS::S3::S3Object.store(
"#{category_name}/#{media_type}/#{filename}",
open(file.path),
bucket,
access: :public_read
)
end
def self.delete!(media_object)
AWS::S3::S3Object.delete(
media_object.filename,
"iron-uploads/#{media_object.category.bucket_name}/#{media_object.class.to_s.downcase}s"
)
AWS::S3::S3Object.delete(
media_object.placeholder_filename,
"iron-uploads/#{media_object.category.bucket_name}/placeholders"
)
end
def store_placeholder!
AWS::S3::S3Object.store(
"#{category_name}/placeholders/#{filename}",
open(file.path),
bucket,
access: :public_read
)
end
def url
"https://#{bucket}.s3.amazonaws.com/#{category_name}/#{media_type}/#{filename}"
end
def placeholder_url
"https://#{bucket}.s3.amazonaws.com/#{category_name}/placeholders/#{filename}"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment