class S3Assets::Uploader
Constants
- MAX_FILE_SIZE
- UPLOAD_EXPIRATION
Public Instance Methods
acl()
click to toggle source
# File lib/s3_assets/uploader.rb, line 90 def acl 'public-read' end
asset_host()
click to toggle source
# File lib/s3_assets/uploader.rb, line 41 def asset_host "https://#{::S3Assets.fog_permanent_bucket}.s3.amazonaws.com" end
fog_attributes()
click to toggle source
# File lib/s3_assets/uploader.rb, line 65 def fog_attributes # cached for 1 year {'Cache-Control' => "public, max-age=#{60*60*24*365}"} end
fog_authenticated_url_expiration()
click to toggle source
# File lib/s3_assets/uploader.rb, line 45 def fog_authenticated_url_expiration 10.hours end
fog_credentials()
click to toggle source
# File lib/s3_assets/uploader.rb, line 23 def fog_credentials { :provider => 'AWS', :aws_access_key_id => ::S3Assets.aws_access_key_id, :aws_secret_access_key => ::S3Assets.aws_secret_access_key, :region => ::S3Assets.aws_region, :host => ::S3Assets.fog_host, } end
fog_directory()
click to toggle source
# File lib/s3_assets/uploader.rb, line 37 def fog_directory ::S3Assets.fog_permanent_bucket end
fog_public()
click to toggle source
# File lib/s3_assets/uploader.rb, line 19 def fog_public true end
ignore_download_errors()
click to toggle source
# File lib/s3_assets/uploader.rb, line 57 def ignore_download_errors false end
ignore_integrity_errors()
click to toggle source
# File lib/s3_assets/uploader.rb, line 49 def ignore_integrity_errors false end
ignore_processing_errors()
click to toggle source
# File lib/s3_assets/uploader.rb, line 53 def ignore_processing_errors false end
original_filename()
click to toggle source
Calls superclass method
# File lib/s3_assets/uploader.rb, line 10 def original_filename name = super return URI.decode(name) if name.present? end
policy(options={})
click to toggle source
# File lib/s3_assets/uploader.rb, line 114 def policy(options={}) Base64.encode64(policy_doc(options).to_json).gsub("\n", "") end
policy_doc(options={})
click to toggle source
# File lib/s3_assets/uploader.rb, line 94 def policy_doc(options={}) options[:expiration] ||= UPLOAD_EXPIRATION options[:max_file_size] ||= MAX_FILE_SIZE success_action_status = options[:success_action_status] store_dir = self.temp_store_dir doc = { 'expiration' => Time.now.utc + options[:expiration], 'conditions' => [ ["starts-with", "$key", store_dir], {"bucket" => ::S3Assets.fog_temp_bucket}, {"acl" => acl}, ["content-length-range", 1, options[:max_file_size]] ] } doc['conditions'] << {"success_action_status" => success_action_status.to_s} unless success_action_status.blank? doc['conditions'] << ["starts-with", "$Content-type", ""] doc end
sanitize_regexp()
click to toggle source
# File lib/s3_assets/uploader.rb, line 15 def sanitize_regexp /[^[:word:]\.\-\+]/ end
set_model_content_type()
click to toggle source
# File lib/s3_assets/uploader.rb, line 128 def set_model_content_type return if file.blank? type = File.magic_number_type(file.path.to_s) rescue nil content_types = MIME::Types.type_for(type.to_s) type = File.extname(file.path) content_types |= MIME::Types.type_for(type.to_s) model.content_type = content_types.first.to_s end
signature(policy=nil)
click to toggle source
# File lib/s3_assets/uploader.rb, line 118 def signature policy=nil policy = self.policy unless policy Base64.encode64( OpenSSL::HMAC.digest( OpenSSL::Digest.new('sha1'), AWS_SECRET_ACCESS_KEY, policy ) ).gsub("\n", "") end
storage()
click to toggle source
# File lib/s3_assets/uploader.rb, line 33 def storage return :fog end
store_dir()
click to toggle source
# File lib/s3_assets/uploader.rb, line 70 def store_dir return "prod/#{model.id.to_s}" if Rails.env.production? return "dev/#{model.id.to_s}" end
temp_store_dir()
click to toggle source
# File lib/s3_assets/uploader.rb, line 75 def temp_store_dir return "prod/#{model.id.to_s}" if Rails.env.production? return "dev/#{model.id.to_s}" end
upload_url()
click to toggle source
# File lib/s3_assets/uploader.rb, line 61 def upload_url "https://#{::S3Assets.fog_temp_bucket}.s3.amazonaws.com" end
url()
click to toggle source
override the url to return absolute url if available and revert back to standard functionality if it is not available
Calls superclass method
# File lib/s3_assets/uploader.rb, line 82 def url if model.processable? model.absolute_url else super end end
Protected Instance Methods
image?(new_file)
click to toggle source
# File lib/s3_assets/uploader.rb, line 141 def image?(new_file) model.content_type.nil? ? false : model.content_type.include?('image') end