| 1 |
<?php |
| 2 |
|
| 3 |
declare(strict_types=1); |
| 4 |
|
| 5 |
namespace Http\Client\Common; |
| 6 |
|
| 7 |
use Http\Promise\Promise; |
| 8 |
use Psr\Http\Message\RequestInterface; |
| 9 |
|
| 10 |
/** |
| 11 |
* A plugin is a middleware to transform the request and/or the response. |
| 12 |
* |
| 13 |
* The plugin can: |
| 14 |
* - break the chain and return a response |
| 15 |
* - dispatch the request to the next middleware |
| 16 |
* - restart the request |
| 17 |
* |
| 18 |
* @author Joel Wurtz <joel.wurtz@gmail.com> |
| 19 |
*/ |
| 20 |
interface Plugin |
| 21 |
{ |
| 22 |
/** |
| 23 |
* Handle the request and return the response coming from the next callable. |
| 24 |
* |
| 25 |
* @see http://docs.php-http.org/en/latest/plugins/build-your-own.html |
| 26 |
* |
| 27 |
* @param callable(RequestInterface): Promise $next Next middleware in the chain, the request is passed as the first argument |
| 28 |
* @param callable(RequestInterface): Promise $first First middleware in the chain, used to to restart a request |
| 29 |
* |
| 30 |
* @return Promise Resolves a PSR-7 Response or fails with an Http\Client\Exception (The same as HttpAsyncClient) |
| 31 |
*/ |
| 32 |
public function handleRequest(RequestInterface $request, callable $next, callable $first): Promise; |
| 33 |
} |
| 34 |
|