Initial commit
This commit is contained in:
47
lib/brayniac_ai/aws_signature_headers.rb
Normal file
47
lib/brayniac_ai/aws_signature_headers.rb
Normal file
@@ -0,0 +1,47 @@
|
||||
module BrayniacAI
|
||||
class AwsSignatureHeaders < Hash
|
||||
def initialize(http_method, uri, body = "", headers = {})
|
||||
@http_method = http_method
|
||||
@uri = uri
|
||||
@body = body
|
||||
@headers = headers
|
||||
|
||||
set_headers
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
attr_reader :http_method, :uri, :body, :headers
|
||||
|
||||
def request_params
|
||||
{
|
||||
http_method: http_method,
|
||||
url: uri,
|
||||
body: body,
|
||||
headers: headers,
|
||||
}
|
||||
end
|
||||
|
||||
def set_headers
|
||||
# Set self to the signature headers
|
||||
signature.headers.each { |key, value| self[key] = value }
|
||||
end
|
||||
|
||||
def signature
|
||||
signer.sign_request(request_params)
|
||||
end
|
||||
|
||||
def signer
|
||||
Aws::Sigv4::Signer.new(signer_params)
|
||||
end
|
||||
|
||||
def signer_params
|
||||
{
|
||||
service: "execute-api", # TODO: can this be inferred from the URI?
|
||||
region: ENV["AWS_REGION"],
|
||||
access_key_id: ENV["AWS_ACCESS_KEY_ID"],
|
||||
secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user