class Canistor::Authorization
Attributes
access_key_id[R]
date[R]
protocol[R]
region[R]
signature[R]
Public Class Methods
new(authorization)
click to toggle source
# File lib/canistor/authorization.rb, line 11 def initialize(authorization) @protocol, params = authorization.split(' ', 2) params.split(', ').inject({}) do |unpacked, part| name, values = part.split('=') case name when 'Credential' self.credential = values.split('/') when 'Signature' self.signature = values end unpacked end end
Public Instance Methods
valid_signature?(request, credentials)
click to toggle source
# File lib/canistor/authorization.rb, line 25 def valid_signature?(request, credentials) return false if signature.to_s.strip == '' signer = Aws::Sigv4::Signer.new( service: 's3', region: region, credentials_provider: credentials, uri_escape_path: false, unsigned_headers: ['content-length', 'x-amzn-trace-id'] ) signed_request = signer.sign_request( http_method: request.http_method, url: request.endpoint.to_s, headers: request.headers.to_hash, body: request.body ) signature == signer.send( :signature, credentials.secret_access_key, date, signed_request.string_to_sign ) end
Private Instance Methods
credential=(credential)
click to toggle source
# File lib/canistor/authorization.rb, line 54 def credential=(credential) @access_key_id, @date, @region = credential[0, 3] end
signature=(signature)
click to toggle source
# File lib/canistor/authorization.rb, line 50 def signature=(signature) @signature = signature end