Sha256: 14da3f5e981d61e10db71aa4acd100a2d8c49216168bf101c74e80681a4189d8
Contents?: true
Size: 1.36 KB
Versions: 2
Compression:
Stored size: 1.36 KB
Contents
require 'base64' require 'openssl' require 'digest/sha1' require 'json' module S3CorsFileupload class PolicyHelper attr_reader :options def initialize(_options = {}) # default max_file_size to 500 MB if nothing is received @options = { :acl => 'public-read', :max_file_size => Config.max_file_size || 524288000, :bucket => Config.bucket }.merge(_options).merge(:secret_access_key => Config.secret_access_key) end # generate the policy document that amazon is expecting. def policy_document Base64.encode64( { expiration: 1.hour.from_now.utc.strftime('%Y-%m-%dT%H:%M:%S.000Z'), conditions: [ { bucket: options[:bucket] }, { acl: options[:acl] }, { success_action_status: '201' }, ["content-length-range", 0, options[:max_file_size]], ["starts-with", "$utf8", ""], ["starts-with", "$key", ""], ["starts-with", "$Content-Type", ""] ] }.to_json ).gsub(/\n|\r/, '') end # sign our request by Base64 encoding the policy document. def upload_signature Base64.encode64( OpenSSL::HMAC.digest( OpenSSL::Digest::Digest.new('sha1'), options[:secret_access_key], self.policy_document ) ).gsub(/\n/, '') end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
s3_cors_fileupload-0.1.2 | lib/s3_cors_fileupload/rails/policy_helper.rb |
s3_cors_fileupload-0.1.1 | lib/s3_cors_fileupload/rails/policy_helper.rb |