PluginProbe
Yoast SEO – Advanced SEO with real-time guidance and built-in AI / trunk
Yoast SEO – Advanced SEO with real-time guidance and built-in AI vtrunk
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
← All changes | vendor_prefixed/guzzlehttp/guzzle/src/Handler/CurlVersion.php +0 -102 28.0 → trunk View file →
@@ -1,102 +1,0 @@
1 -<?php
2 -
3 -namespace YoastSEO_Vendor\GuzzleHttp\Handler;
4 -
5 -/**
6 - * @internal
7 - */
8 -final class CurlVersion
9 -{
10 - private const MIN_VERSION = '7.21.2';
11 - private const TLS_12_VERSION = '7.34.0';
12 - private const TLS_13_VERSION = '7.52.0';
13 - // curl 7.52.0 introduced HTTPS proxy support, advertised by a feature bit
14 - // (a build can meet the version yet lack the feature). Earlier libcurl
15 - // mishandles an https:// proxy: before 7.50.2 it silently downgrades to a
16 - // plaintext HTTP proxy, and 7.50.2 through 7.51 reject it at connect time.
17 - private const HTTPS_PROXY_VERSION = '7.52.0';
18 - private const HANDLER_SHARING_VERSION = '7.35.0';
19 - private const SSL_SESSION_SHARING_VERSION = '8.6.0';
20 - /**
21 - * @var array{version: string, features: int}|false|null
22 - */
23 - private static $versionInfo;
24 - private function __construct()
25 - {
26 - }
27 - public static function supportsCurlHandler() : bool
28 - {
29 - $version = self::getVersion();
30 - return $version !== null && \version_compare($version, self::MIN_VERSION, '>=');
31 - }
32 - public static function supportsTls12() : bool
33 - {
34 - $version = self::getVersion();
35 - return self::supportsSsl() && \defined('CURL_SSLVERSION_TLSv1_2') && $version !== null && \version_compare($version, self::TLS_12_VERSION, '>=');
36 - }
37 - public static function supportsTls13() : bool
38 - {
39 - $version = self::getVersion();
40 - return self::supportsSsl() && \defined('CURL_SSLVERSION_TLSv1_3') && $version !== null && \version_compare($version, self::TLS_13_VERSION, '>=');
41 - }
42 - public static function supportsHttp2() : bool
43 - {
44 - $versionInfo = self::getVersionInfo();
45 - return self::supportsTls12() && \defined('CURL_VERSION_HTTP2') && $versionInfo !== null && 0 !== (\CURL_VERSION_HTTP2 & $versionInfo['features']);
46 - }
47 - public static function supportsHttpsProxy() : bool
48 - {
49 - $versionInfo = self::getVersionInfo();
50 - // CURL_VERSION_HTTPS_PROXY is not defined on every supported PHP
51 - // version; fall back to the curl.h bit value.
52 - $httpsProxyFeature = \defined('CURL_VERSION_HTTPS_PROXY') ? \CURL_VERSION_HTTPS_PROXY : 1 << 21;
53 - return $versionInfo !== null && \version_compare($versionInfo['version'], self::HTTPS_PROXY_VERSION, '>=') && 0 !== ($httpsProxyFeature & $versionInfo['features']);
54 - }
55 - public static function supportsHandlerSharing() : bool
56 - {
57 - $version = self::getVersion();
58 - return $version !== null && \version_compare($version, self::HANDLER_SHARING_VERSION, '>=');
59 - }
60 - public static function ensureHandlerSharingSupported() : void
61 - {
62 - if (!self::supportsHandlerSharing()) {
63 - throw new \InvalidArgumentException(\sprintf('The "transport_sharing" option requires libcurl %s or higher for cURL share handles.', self::HANDLER_SHARING_VERSION));
64 - }
65 - }
66 - public static function supportsSslSessionSharing() : bool
67 - {
68 - $version = self::getVersion();
69 - return self::supportsSsl() && $version !== null && \version_compare($version, self::SSL_SESSION_SHARING_VERSION, '>=');
70 - }
71 - public static function ensureSslSessionSharingSupported() : void
72 - {
73 - if (!self::supportsSslSessionSharing()) {
74 - throw new \InvalidArgumentException(\sprintf('The "transport_sharing" option requires libcurl %s or higher with SSL support for SSL session sharing.', self::SSL_SESSION_SHARING_VERSION));
75 - }
76 - }
77 - private static function supportsSsl() : bool
78 - {
79 - $versionInfo = self::getVersionInfo();
80 - return \defined('CURL_VERSION_SSL') && $versionInfo !== null && 0 !== (\CURL_VERSION_SSL & $versionInfo['features']);
81 - }
82 - public static function getVersion() : ?string
83 - {
84 - $versionInfo = self::getVersionInfo();
85 - return $versionInfo === null ? null : $versionInfo['version'];
86 - }
87 - /**
88 - * @return array{version: string, features: int}|null
89 - */
90 - private static function getVersionInfo() : ?array
91 - {
92 - if (self::$versionInfo === null) {
93 - if (!\function_exists('curl_version')) {
94 - self::$versionInfo = \false;
95 - } else {
96 - $versionInfo = \curl_version();
97 - self::$versionInfo = \is_array($versionInfo) && isset($versionInfo['version'], $versionInfo['features']) && \is_string($versionInfo['version']) && \is_int($versionInfo['features']) ? ['version' => $versionInfo['version'], 'features' => $versionInfo['features']] : \false;
98 - }
99 - }
100 - return self::$versionInfo === \false ? null : self::$versionInfo;
101 - }
102 -}