[e3d4e0a] | 1 | <?php
|
---|
| 2 |
|
---|
| 3 | namespace GuzzleHttp\Handler;
|
---|
| 4 |
|
---|
| 5 | use GuzzleHttp\Promise\PromiseInterface;
|
---|
| 6 | use GuzzleHttp\RequestOptions;
|
---|
| 7 | use Psr\Http\Message\RequestInterface;
|
---|
| 8 |
|
---|
| 9 | /**
|
---|
| 10 | * Provides basic proxies for handlers.
|
---|
| 11 | *
|
---|
| 12 | * @final
|
---|
| 13 | */
|
---|
| 14 | class Proxy
|
---|
| 15 | {
|
---|
| 16 | /**
|
---|
| 17 | * Sends synchronous requests to a specific handler while sending all other
|
---|
| 18 | * requests to another handler.
|
---|
| 19 | *
|
---|
| 20 | * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $default Handler used for normal responses
|
---|
| 21 | * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $sync Handler used for synchronous responses.
|
---|
| 22 | *
|
---|
| 23 | * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the composed handler.
|
---|
| 24 | */
|
---|
| 25 | public static function wrapSync(callable $default, callable $sync): callable
|
---|
| 26 | {
|
---|
| 27 | return static function (RequestInterface $request, array $options) use ($default, $sync): PromiseInterface {
|
---|
| 28 | return empty($options[RequestOptions::SYNCHRONOUS]) ? $default($request, $options) : $sync($request, $options);
|
---|
| 29 | };
|
---|
| 30 | }
|
---|
| 31 |
|
---|
| 32 | /**
|
---|
| 33 | * Sends streaming requests to a streaming compatible handler while sending
|
---|
| 34 | * all other requests to a default handler.
|
---|
| 35 | *
|
---|
| 36 | * This, for example, could be useful for taking advantage of the
|
---|
| 37 | * performance benefits of curl while still supporting true streaming
|
---|
| 38 | * through the StreamHandler.
|
---|
| 39 | *
|
---|
| 40 | * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $default Handler used for non-streaming responses
|
---|
| 41 | * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $streaming Handler used for streaming responses
|
---|
| 42 | *
|
---|
| 43 | * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the composed handler.
|
---|
| 44 | */
|
---|
| 45 | public static function wrapStreaming(callable $default, callable $streaming): callable
|
---|
| 46 | {
|
---|
| 47 | return static function (RequestInterface $request, array $options) use ($default, $streaming): PromiseInterface {
|
---|
| 48 | return empty($options['stream']) ? $default($request, $options) : $streaming($request, $options);
|
---|
| 49 | };
|
---|
| 50 | }
|
---|
| 51 | }
|
---|