Class: LittleGhost::MCP::SigV4Signer
- Inherits:
-
Object
- Object
- LittleGhost::MCP::SigV4Signer
- Defined in:
- lib/little_ghost/mcp/client.rb
Overview
SigV4Signer adds AWS Signature Version 4 authentication to MCP requests.
Requires the application-provided aws-sigv4 gem and uses its normal AWS
credentials-provider chain unless one is supplied explicitly.
Instance Method Summary collapse
-
#call(request) ⇒ Object
Signs
requestin place immediately before transport. -
#initialize(service:, region:, credentials_provider: nil) ⇒ SigV4Signer
constructor
Configures signing for
serviceandregion.
Constructor Details
#initialize(service:, region:, credentials_provider: nil) ⇒ SigV4Signer
Configures signing for service and region.
373 374 375 376 377 378 379 380 381 382 |
# File 'lib/little_ghost/mcp/client.rb', line 373 def initialize(service:, region:, credentials_provider: nil) require "aws-sigv4" @signer = Aws::Sigv4::Signer.new( service: service, region: region, credentials_provider: credentials_provider ) rescue LoadError raise ConfigurationError, "MCP SigV4 signing requires the optional aws-sigv4 gem" end |
Instance Method Details
#call(request) ⇒ Object
Signs request in place immediately before transport.
385 386 387 388 389 390 391 392 393 |
# File 'lib/little_ghost/mcp/client.rb', line 385 def call(request) signature = @signer.sign_request( http_method: request.method, url: request.uri, headers: request.to_hash.transform_values { |values| Array(values).join(",") }, body: request.body ) signature.headers.each { |name, value| request[name] = value } end |