krz/vox-populi
A Tumblr web client.
clone: git clone https://gitbay.org/krz/vox-populi.git
main: vendor/guzzlehttp/guzzle/src/Handler/Proxy.php · raw
1<?php
2namespace GuzzleHttp\Handler;
3
4use GuzzleHttp\RequestOptions;
5use Psr\Http\Message\RequestInterface;
6
7/**
8 * Provides basic proxies for handlers.
9 */
10class Proxy
11{
12 /**
13 * Sends synchronous requests to a specific handler while sending all other
14 * requests to another handler.
15 *
16 * @param callable $default Handler used for normal responses
17 * @param callable $sync Handler used for synchronous responses.
18 *
19 * @return callable Returns the composed handler.
20 */
21 public static function wrapSync(
22 callable $default,
23 callable $sync
24 ) {
25 return function (RequestInterface $request, array $options) use ($default, $sync) {
26 return empty($options[RequestOptions::SYNCHRONOUS])
27 ? $default($request, $options)
28 : $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 $default Handler used for non-streaming responses
41 * @param callable $streaming Handler used for streaming responses
42 *
43 * @return callable Returns the composed handler.
44 */
45 public static function wrapStreaming(
46 callable $default,
47 callable $streaming
48 ) {
49 return function (RequestInterface $request, array $options) use ($default, $streaming) {
50 return empty($options['stream'])
51 ? $default($request, $options)
52 : $streaming($request, $options);
53 };
54 }
55}