PluginProbe
Yoast SEO – Advanced SEO with real-time guidance and built-in AI / 28.5
Yoast SEO – Advanced SEO with real-time guidance and built-in AI v28.5
28.5 28.4 28.3 28.2 28.1 28.0 27.9 27.8 27.7 27.6 27.5 trunk 18.0 18.1 18.2 18.3 18.4 18.4.1 18.5 18.5.1 18.6 18.7 18.8 18.9 19.0 All 129 releases
wordpress-seo / vendor_prefixed / guzzlehttp / guzzle / src / Handler / Proxy.php

Proxy.php in Yoast SEO – Advanced SEO with real-time guidance and built-in AI 28.5, at vendor_prefixed/guzzlehttp/guzzle/src/Handler/Proxy.php

75 lines 3.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace YoastSEO_Vendor\GuzzleHttp\Handler;
4
5 use YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface;
6 use YoastSEO_Vendor\GuzzleHttp\RequestOptions;
7 use YoastSEO_Vendor\Psr\Http\Message\RequestInterface;
8 /**
9 * Provides basic proxies for handlers.
10 *
11 * @final
12 */
13 class Proxy
14 {
15 /**
16 * Sends synchronous requests to a specific handler while sending all other
17 * requests to another handler.
18 *
19 * @param callable(RequestInterface, array): PromiseInterface $default Handler used for normal responses
20 * @param callable(RequestInterface, array): PromiseInterface $sync Handler used for synchronous responses.
21 *
22 * @return callable(RequestInterface, array): PromiseInterface Returns the composed handler.
23 */
24 public static function wrapSync(callable $default, callable $sync) : callable
25 {
26 return static function (\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) use($default, $sync) : PromiseInterface {
27 return empty($options[\YoastSEO_Vendor\GuzzleHttp\RequestOptions::SYNCHRONOUS]) ? $default($request, $options) : $sync($request, $options);
28 };
29 }
30 /**
31 * Sends streaming requests to a streaming compatible handler while sending
32 * all other requests to a default handler.
33 *
34 * This, for example, could be useful for taking advantage of the
35 * performance benefits of curl while still supporting true streaming
36 * through the StreamHandler.
37 *
38 * @param callable(RequestInterface, array): PromiseInterface $default Handler used for non-streaming responses
39 * @param callable(RequestInterface, array): PromiseInterface $streaming Handler used for streaming responses
40 *
41 * @return callable(RequestInterface, array): PromiseInterface Returns the composed handler.
42 */
43 public static function wrapStreaming(callable $default, callable $streaming) : callable
44 {
45 return static function (\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) use($default, $streaming) : PromiseInterface {
46 return empty($options['stream']) ? $default($request, $options) : $streaming($request, $options);
47 };
48 }
49 /**
50 * Sends requests to a fallback handler when the default cURL handler cannot
51 * honor TLS 1.2 selection.
52 *
53 * @param callable(RequestInterface, array): PromiseInterface $default
54 * @param callable(RequestInterface, array): PromiseInterface $fallback
55 *
56 * @return callable(RequestInterface, array): PromiseInterface Returns the composed handler.
57 */
58 public static function wrapTlsFallback(callable $default, callable $fallback) : callable
59 {
60 return static function (\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) use($default, $fallback) : PromiseInterface {
61 if (self::requiresTls12Fallback($options)) {
62 return $fallback($request, $options);
63 }
64 return $default($request, $options);
65 };
66 }
67 /**
68 * @param array<string, mixed> $options
69 */
70 private static function requiresTls12Fallback(array $options) : bool
71 {
72 return isset($options[\YoastSEO_Vendor\GuzzleHttp\RequestOptions::CRYPTO_METHOD]) && $options[\YoastSEO_Vendor\GuzzleHttp\RequestOptions::CRYPTO_METHOD] === \STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT && !\YoastSEO_Vendor\GuzzleHttp\Handler\CurlVersion::supportsTls12();
73 }
74 }
75