class S3BrowserUploads::FormDefinition
Attributes
aws_secret_access_key[RW]
conditions[RW]
expires[RW]
fields[RW]
region[RW]
Public Class Methods
new(options={})
click to toggle source
# File lib/s3_browser_uploads/form_definition.rb, line 57 def initialize(options={}) @fields = {} @conditions = {} options.each {|key, value| public_send("#{key}=", value)} @digest = OpenSSL::Digest.new('sha1') @hmac = lambda {|data| OpenSSL::HMAC.digest(@digest, @aws_secret_access_key, data)} end
Public Instance Methods
add_condition(key, condition)
click to toggle source
# File lib/s3_browser_uploads/form_definition.rb, line 41 def add_condition key, condition @conditions[key] = case condition when String then {key => condition} when Hash then [condition.keys.first, "$#{key}", condition.values.first] when Range then [key, condition.begin, condition.end] else raise ArgumentError, "unknown condition type #{condition}" end end
add_field(key, value)
click to toggle source
# File lib/s3_browser_uploads/form_definition.rb, line 35 def add_field key, value fields[key] = value add_condition key, value value end
aws_access_key_id()
click to toggle source
# File lib/s3_browser_uploads/form_definition.rb, line 13 def aws_access_key_id fields['AWSAccessKeyID'] #access key id is not included in the policy end
aws_access_key_id=(value)
click to toggle source
# File lib/s3_browser_uploads/form_definition.rb, line 9 def aws_access_key_id= value fields['AWSAccessKeyID'] = value #access key id is not included in the policy end
aws_session_token()
click to toggle source
# File lib/s3_browser_uploads/form_definition.rb, line 18 def aws_session_token fields['x-amz-security-token'] end
aws_session_token=(value)
click to toggle source
# File lib/s3_browser_uploads/form_definition.rb, line 22 def aws_session_token= value add_field 'x-amz-security-token', value end
bucket()
click to toggle source
# File lib/s3_browser_uploads/form_definition.rb, line 27 def bucket fields['bucket'] end
bucket=(value)
click to toggle source
# File lib/s3_browser_uploads/form_definition.rb, line 31 def bucket= value add_field 'bucket', value end
encoded_policy()
click to toggle source
# File lib/s3_browser_uploads/form_definition.rb, line 73 def encoded_policy Base64.strict_encode64(policy_document.to_json) end
endpoint()
click to toggle source
# File lib/s3_browser_uploads/form_definition.rb, line 69 def endpoint "https://#{bucket}.s3-#{region}.amazonaws.com" end
policy_document()
click to toggle source
# File lib/s3_browser_uploads/form_definition.rb, line 77 def policy_document { 'expiration' => expires.utc.xmlschema, 'conditions' => @conditions.values } end
restrict_content_length(range)
click to toggle source
# File lib/s3_browser_uploads/form_definition.rb, line 53 def restrict_content_length range add_condition 'content-length-range', range end
signature()
click to toggle source
# File lib/s3_browser_uploads/form_definition.rb, line 65 def signature Base64.strict_encode64(@hmac[encoded_policy]) end