39 lines
821 B
PHP
39 lines
821 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Http\Client\Common\Plugin;
|
|
|
|
use Http\Client\Common\Plugin;
|
|
use Http\Message\Authentication;
|
|
use Http\Promise\Promise;
|
|
use Psr\Http\Message\RequestInterface;
|
|
|
|
/**
|
|
* Send an authenticated request.
|
|
*
|
|
* @author Joel Wurtz <joel.wurtz@gmail.com>
|
|
*/
|
|
final class AuthenticationPlugin implements Plugin
|
|
{
|
|
/**
|
|
* @var Authentication An authentication system
|
|
*/
|
|
private $authentication;
|
|
|
|
public function __construct(Authentication $authentication)
|
|
{
|
|
$this->authentication = $authentication;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function handleRequest(RequestInterface $request, callable $next, callable $first): Promise
|
|
{
|
|
$request = $this->authentication->authenticate($request);
|
|
|
|
return $next($request);
|
|
}
|
|
}
|