48 lines
996 B
Ruby
48 lines
996 B
Ruby
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
|