Class: BucketClient::AWS4RequestSigner

Inherits:
Object
  • Object
show all
Defined in:
lib/bucket_client/aws4_request_signer.rb

Instance Method Summary collapse

Constructor Details

#initialize(id, secret) ⇒ AWS4RequestSigner

Returns a new instance of AWS4RequestSigner.



10
11
12
13
14
# File 'lib/bucket_client/aws4_request_signer.rb', line 10

def initialize(id, secret)
	@id = id
	@secret = secret
	@algorithm = "AWS4-HMAC-SHA256"
end

Instance Method Details

#sign(request, service, region) ⇒ KirinHttp::Message

Signs the http request using the AWS4 signing protocol

Parameters:

  • request (KirinHttp::Message)

    http request message to sign

  • service (String)

    service type

  • region (String)

    region of service

Returns:

  • (KirinHttp::Message)


22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/bucket_client/aws4_request_signer.rb', line 22

def sign(request, service, region)

	request.header["x-amz-date"] = amz_date
	request.header["Content-MD5"] = request_md5(request)
	request.header["x-amz-content-sha256"] = sha256 request.content

	cred = credential region, service
	canonical_req = canonical_request request
	signed_payload = string_to_sign(cred, canonical_req)
	signature = get_signature @secret, date_stamp, region, service, signed_payload
	request.header["Authorization"] = auth cred, signed_headers(request), signature
	request
end