2 namespace GuzzleHttp\Handler;
4 use GuzzleHttp\RequestOptions;
5 use Psr\Http\Message\RequestInterface;
8 * Provides basic proxies for handlers.
13 * Sends synchronous requests to a specific handler while sending all other
14 * requests to another handler.
16 * @param callable $default Handler used for normal responses
17 * @param callable $sync Handler used for synchronous responses.
19 * @return callable Returns the composed handler.
21 public static function wrapSync(
25 return function (RequestInterface $request, array $options) use ($default, $sync) {
26 return empty($options[RequestOptions::SYNCHRONOUS])
27 ? $default($request, $options)
28 : $sync($request, $options);
33 * Sends streaming requests to a streaming compatible handler while sending
34 * all other requests to a default handler.
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.
40 * @param callable $default Handler used for non-streaming responses
41 * @param callable $streaming Handler used for streaming responses
43 * @return callable Returns the composed handler.
45 public static function wrapStreaming(
49 return function (RequestInterface $request, array $options) use ($default, $streaming) {
50 return empty($options['stream'])
51 ? $default($request, $options)
52 : $streaming($request, $options);