Guzzle 6 support for 99designs http-signatures library
Adds 99designs/http-signatures support to Guzzle 6.
For Guzzle 4 & 5 use the v1.x
release of this repo.
For Guzzle 3 see the 99designs/http-signatures-guzzle repo.
This library includes support for automatically signing Guzzle requests using Middleware.
You can use GuzzleHttpSignatures::defaultHandlerFromContext
to easily create the default Guzzle handler with the
middleware added to sign every request.
use GuzzleHttp\Client;
use HttpSignatures\Context;
use HttpSignatures\GuzzleHttpSignatures;
require __DIR__ . "/../vendor/autoload.php";
$context = new Context([
'keys' => ['examplekey' => 'secret-key-here'],
'algorithm' => 'hmac-sha256',
'headers' => ['(request-target)', 'date'],
]);
$handlerStack = GuzzleHttpSignatures::defaultHandlerFromContext($context);
$client = new Client(['handler' => $handlerStack]);
// The below will now send a signed request to: http://example.org/path?query=123
$response = $client->get("http://www.example.com/path?query=123", ['headers' => ['date' => 'today']]);
Or if you're creating a custom HandlerStack
you can add the Middleware yourself:
<?php
use GuzzleHttp\Client;
use GuzzleHttp\Handler\CurlHandler;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;
use HttpSignatures\Context;
use HttpSignatures\GuzzleHttpSignatures;
require __DIR__ . "/../vendor/autoload.php";
$context = new Context([
'keys' => ['examplekey' => 'secret-key-here'],
'algorithm' => 'hmac-sha256',
'headers' => ['(request-target)', 'date'],
]);
$handlerStack = new HandlerStack();
$stack->setHandler(new CurlHandler());
$stack->push(GuzzleHttpSignatures::middlewareFromContext($this->context));
$stack->push(Middleware::history($this->history));
$client = new Client(['handler' => $handlerStack]);
// The below will now send a signed request to: http://example.org/path?query=123
$response = $client->get("http://www.example.com/path?query=123", ['headers' => ['date' => 'today']]);
Pull Requests are welcome.