class Shutterbug::Storage::S3Storage
Constants
- PUT_URL_EXP_TIME
Attributes
filename[R]
url[R]
Public Class Methods
connect!()
click to toggle source
# File lib/shutterbug/storage/s3_storage.rb, line 12 def self.connect! Fog::Storage.new({ :provider => 'AWS', :aws_access_key_id => Configuration.instance.s3_key, :aws_secret_access_key => Configuration.instance.s3_secret }) end
connection()
click to toggle source
# File lib/shutterbug/storage/s3_storage.rb, line 20 def self.connection @connection ||= self.connect! end
create_bin()
click to toggle source
# File lib/shutterbug/storage/s3_storage.rb, line 24 def self.create_bin self.connection.directories.create( :key => Configuration.instance.s3_bin, :public => true) end
fs_path_exists?(filename)
click to toggle source
# File lib/shutterbug/storage/s3_storage.rb, line 48 def self.fs_path_exists?(filename) File.exists?(filename) end
get_url(filename)
click to toggle source
# File lib/shutterbug/storage/s3_storage.rb, line 52 def self.get_url(filename) # Manual URL construction, no proper method implemented in FOG. # But should be available soon, see: https://github.com/fog/fog/issues/3263 "https://#{Configuration.instance.s3_bin}.s3.amazonaws.com/#{filename}" end
lookup_bin()
click to toggle source
# File lib/shutterbug/storage/s3_storage.rb, line 30 def self.lookup_bin self.connection.directories.get(Configuration.instance.s3_bin) || self.create_bin end
new(filename)
click to toggle source
# File lib/shutterbug/storage/s3_storage.rb, line 74 def initialize(filename) @filename = filename begin @stream_file = S3Storage.write(filename) @url = @stream_file.public_url ensure unlink(filename) end end
put_url(filename)
click to toggle source
# File lib/shutterbug/storage/s3_storage.rb, line 58 def self.put_url(filename) expiry = (Time.now + PUT_URL_EXP_TIME).to_i headers = {} query = { 'x-amz-acl' => 'public-read' } options = { path_style: true, query: query } self.connection.put_object_url(Configuration.instance.s3_bin, filename, expiry, headers, options) end
s3_bin()
click to toggle source
# File lib/shutterbug/storage/s3_storage.rb, line 34 def self.s3_bin @s3_bin ||= self.lookup_bin end
write(filename)
click to toggle source
# File lib/shutterbug/storage/s3_storage.rb, line 38 def self.write(filename) full_path = Configuration.instance.fs_path_for(filename) if self.fs_path_exists? full_path self.s3_bin.files.create( :key => filename, :body => File.open(full_path), :public => true) end end
Public Instance Methods
unlink(filename)
click to toggle source
# File lib/shutterbug/storage/s3_storage.rb, line 68 def unlink(filename) if File.exists? filename FileUtils.rm(filename) end end