class Aws4Signer
Constants
- VERSION
Public Class Methods
new(access_key_id, secret_access_key, region, service, security_token: nil)
click to toggle source
# File lib/aws4_signer.rb, line 24 def initialize(access_key_id, secret_access_key, region, service, security_token: nil) @access_key_id = access_key_id @secret_access_key = secret_access_key @region = region @service = service @security_token = security_token end
uri_encode(str)
click to toggle source
to be exactly follow the AWS documentation, implement by ourselves
# File lib/aws4_signer.rb, line 14 def self.uri_encode(str) str.bytes.map do |c| if %w[- . _ ~].include?(c) || (?A .. ?Z).cover?(c) || (?a .. ?z).cover?(c) || (?0 .. ?9).cover?(c) c else "%#{c.ord.to_s(16)}" end end.join end
Public Instance Methods
sign(verb, uri, headers: {}, body: '')
click to toggle source
# File lib/aws4_signer.rb, line 32 def sign(verb, uri, headers: {}, body: '') raise ArgumentError, 'URI must provided' unless uri Signature.new(@access_key_id, @secret_access_key, @region, @service, verb, uri, headers, body, security_token: @security_token) end
sign_http_request(req, uri = nil)
click to toggle source
# File lib/aws4_signer.rb, line 37 def sign_http_request(req, uri = nil) sign( req.method, uri || req.uri, headers: req.to_hash, body: req.body || '', ).tap do |signature| signature.attach_to_http_request(req) end end