Sha256: d542e461b110af4aab400057b71d96b3fe09458d27b3c1dee9d35697c12b6ab5
Contents?: true
Size: 1.18 KB
Versions: 2
Compression:
Stored size: 1.18 KB
Contents
module AdminIt # Sign urls for s3 class SignedUrlController < AdminIt.config.controller before_filter :authenticate_user! def index render json: { policy: s3_upload_policy_document, signature: s3_upload_signature, key: "uploads/#{SecureRandom.uuid}/#{params[:doc][:title]}", success_action_redirect: '/' } end private # generate the policy document that amazon is expecting. def s3_upload_policy_document Base64.encode64( { expiration: 12.hours.from_now.utc.strftime('%Y-%m-%dT%H:%M:%S.000Z'), conditions: [ { bucket: AdminIt.config.s3[:bucket] }, { acl: 'public-read' }, ['starts-with', '$key', 'uploads/'], { success_action_status: '201' } ] }.to_json ).gsub(/\n|\r/, '') end # sign our request by Base64 encoding the policy document. def s3_upload_signature puts AdminIt.config.s3 Base64.encode64( OpenSSL::HMAC.digest( OpenSSL::Digest.new('sha1'), AdminIt.config.s3[:secret_access_key], s3_upload_policy_document ) ).gsub(/\n/, '') end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
admin_it-1.2.8 | app/controllers/admin_it/signed_url_controller.rb |
admin_it-1.2.7 | app/controllers/admin_it/signed_url_controller.rb |