PluginProbe
Plausible Analytics / trunk
Plausible Analytics vtrunk
2.6.1 2.6.0 trunk 1.0.0 1.0.1 1.1.0 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 All 52 releases
plausible-analytics / src / Client / lib / Lib / GuzzleHttp / Handler / Proxy.php

Proxy.php in Plausible Analytics trunk, at src/Client/lib/Lib/GuzzleHttp/Handler/Proxy.php

52 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Plausible\Analytics\WP\Client\Lib\GuzzleHttp\Handler;
4
5 use Plausible\Analytics\WP\Client\Lib\GuzzleHttp\Promise\PromiseInterface;
6 use Plausible\Analytics\WP\Client\Lib\GuzzleHttp\RequestOptions;
7 use Plausible\Analytics\WP\Client\Lib\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(\Plausible\Analytics\WP\Client\Lib\Psr\Http\Message\RequestInterface, array): \Plausible\Analytics\WP\Client\Lib\GuzzleHttp\Promise\PromiseInterface $default Handler used for normal responses
21 * @param callable(\Plausible\Analytics\WP\Client\Lib\Psr\Http\Message\RequestInterface, array): \Plausible\Analytics\WP\Client\Lib\GuzzleHttp\Promise\PromiseInterface $sync Handler used for synchronous responses.
22 *
23 * @return callable(\Plausible\Analytics\WP\Client\Lib\Psr\Http\Message\RequestInterface, array): \Plausible\Analytics\WP\Client\Lib\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(\Plausible\Analytics\WP\Client\Lib\Psr\Http\Message\RequestInterface, array): \Plausible\Analytics\WP\Client\Lib\GuzzleHttp\Promise\PromiseInterface $default Handler used for non-streaming responses
41 * @param callable(\Plausible\Analytics\WP\Client\Lib\Psr\Http\Message\RequestInterface, array): \Plausible\Analytics\WP\Client\Lib\GuzzleHttp\Promise\PromiseInterface $streaming Handler used for streaming responses
42 *
43 * @return callable(\Plausible\Analytics\WP\Client\Lib\Psr\Http\Message\RequestInterface, array): \Plausible\Analytics\WP\Client\Lib\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 }
52