Class: AssetUploader
- Inherits:
-
Object
- Object
- AssetUploader
- Defined in:
- lib/asset_uploader.rb,
lib/asset_uploader/version.rb,
lib/asset_uploader/uploader.rb
Defined Under Namespace
Classes: Uploader
Constant Summary collapse
- SIGNATURE_LENGTH =
6
- PADDING =
"x" * SIGNATURE_LENGTH
- VERSION =
"0.0.3"
Instance Method Summary collapse
-
#initialize(prefix, path_to_asset) ⇒ AssetUploader
constructor
A new instance of AssetUploader.
- #sign ⇒ Object
- #target_path ⇒ Object
- #upload ⇒ Object
Constructor Details
#initialize(prefix, path_to_asset) ⇒ AssetUploader
Returns a new instance of AssetUploader.
10 11 12 13 14 |
# File 'lib/asset_uploader.rb', line 10 def initialize(prefix, path_to_asset) @prefix = prefix @path_to_asset = path_to_asset @original_file_name = @target_file_name = File.basename(@path_to_asset) end |
Instance Method Details
#sign ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/asset_uploader.rb', line 16 def sign content = File.read(@path_to_asset) digest = Digest::SHA1.digest(content) digest = digest.unpack("q").first digest = -digest if digest < 0 digest = "#{digest.to_s(36)}#{PADDING}"[0, SIGNATURE_LENGTH] @target_file_name = @original_file_name.sub(/\.(\w+)$/) { "__#{digest}__.#{$1}" } end |
#target_path ⇒ Object
25 26 27 |
# File 'lib/asset_uploader.rb', line 25 def target_path File.join(@prefix, @target_file_name) end |
#upload ⇒ Object
29 30 31 32 33 34 |
# File 'lib/asset_uploader.rb', line 29 def upload require "asset_uploader/uploader" # Defer because we don't need S3 keys just to sign uploader = Uploader.new path = uploader.do_upload(target_path, @path_to_asset) path.sub(/s3.amazonaws.com\//, '').sub(/\?AWS.*/, '').sub(/-origin/, '') end |