1. Go to this page and download the library: Download acquia/http-hmac-php library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
acquia / http-hmac-php example snippets
use Acquia\Hmac\Guzzle\HmacAuthMiddleware;
use Acquia\Hmac\Key;
use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
// Create the HTTP HMAC key.
// A key consists of and ID and a Base64-encoded shared secret.
// Note: the API provider may have already encoded the secret. In this case, it should not be re-encoded.
$key_id = 'e7fe97fa-a0c8-4a42-ab8e-2c26d52df059';
$key_secret = base64_encode('secret');
$key = new Key($key_id, $key_secret);
// Optionally, you can provide additional headers when generating the signature.
// The header keys need to be provided to the middleware below.
$headers = [
'X-Custom-1' => 'value1',
'X-Custom-2' => 'value2',
];
// Specify the API's realm.
// Consult the API documentation for this value.
$realm = 'Acquia';
// Create a Guzzle middleware to handle authentication during all requests.
// Provide your key, realm and the names of any additional custom headers.
$middleware = new HmacAuthMiddleware($key, $realm, array_keys($headers));
// Register the middleware.
$stack = HandlerStack::create();
$stack->push($middleware);
// Create a client.
$client = new Client([
'handler' => $stack,
]);
// Request.
try {
$result = $client->get('https://service.acquia.io/api/v1/widget', [
'headers' => $headers,
]);
} catch (ClientException $e) {
print $e->getMessage();
$response = $e->getResponse();
}
print $response->getBody();
use Acquia\Hmac\RequestAuthenticator;
use Acquia\Hmac\ResponseSigner;
// $keyLoader implements \Acquia\Hmac\KeyLoaderInterface
$authenticator = new RequestAuthenticator($keyLoader);
// $request implements PSR-7's \Psr\Http\Message\RequestInterface
// An exception will be thrown if it cannot authenticate.
$key = $authenticator->authenticate($request);
$signer = new ResponseSigner($key, $request);
$signedResponse = $signer->signResponse($response);
// src/AppBundle/AppBundle.php
namespace AppBundle;
use Acquia\Hmac\Symfony\HmacFactory;
use Symfony\Component\HttpKernel\Bundle\Bundle;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class AppBundle extends Bundle
{
public function build(ContainerBuilder $container)
{
parent::build($container);
$extension = $container->getExtension('security');
$extension->addSecurityListenerFactory(new HmacFactory());
}
}
// src/AppBundle/Tests/HmacTestCase.php
namespace MyApp\Bundle\AppBundle\Tests;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Client;
use Acquia\Hmac\Key;
class HmacTestCase extends WebTestCase
{
/**
* @var Client
*/
private $client;
protected static function createClient(array $options = array(), array $server = array())
{
$kernel = static::bootKernel($options);
$client = $kernel->getContainer()->get('test.client.hmac');
$client->setServerParameters($server);
return $client;
}
protected function setUp()
{
$this->client = static::createClient();
$this->client->setKey(new Key('my-key', 'my-not-really-secret'));
}
json
{
"cquia/http-hmac-php": "^5.0"
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.