diff options
Diffstat (limited to 'vendor/php-http')
29 files changed, 0 insertions, 2600 deletions
diff --git a/vendor/php-http/discovery/.php-cs-fixer.php b/vendor/php-http/discovery/.php-cs-fixer.php deleted file mode 100644 index 83809c25d..000000000 --- a/vendor/php-http/discovery/.php-cs-fixer.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -$finder = PhpCsFixer\Finder::create() - ->in(__DIR__.'/src') - ->name('*.php') -; - -$config = (new PhpCsFixer\Config()) - ->setRiskyAllowed(true) - ->setRules([ - '@Symfony' => true, - ]) - ->setFinder($finder) -; - -return $config; diff --git a/vendor/php-http/discovery/CHANGELOG.md b/vendor/php-http/discovery/CHANGELOG.md deleted file mode 100644 index 169f7f40f..000000000 --- a/vendor/php-http/discovery/CHANGELOG.md +++ /dev/null @@ -1,374 +0,0 @@ -# Change Log - -## 1.19.1 - 2023-07-11 - -- [#250](https://github.com/php-http/discovery/pull/250) - Fix: Buzz client instantiation using deprecated Message Factory Discovery, use PSR-17 factory discovery instead. - -## 1.19.0 - 2023-06-19 - -- [#249](https://github.com/php-http/discovery/pull/249) - Have composer plugin correctly install Symfony http client when nothing explicitly requires psr 18 resp. httplug. -- [#241](https://github.com/php-http/discovery/pull/241) - Support discovering PSR-17 factories of `httpsoft/http-message` package - -## 1.18.1 - 2023-05-17 - -- [#242](https://github.com/php-http/discovery/pull/242) - Better exception message when no legacy php-http message factories can be built. Also needs php-http/message-factory package and they are deprecated in favor of PSR-17 anyways. - -## 1.18.0 - 2023-05-03 - -- [#235](https://github.com/php-http/discovery/pull/235) - Deprecate HttpClientDiscovery, use Psr18ClientDiscovery instead -- [#238](https://github.com/php-http/discovery/pull/238) - Skip requiring php-http/message-factory when installing symfony/http-client 6.3+ -- [#239](https://github.com/php-http/discovery/pull/239) - Skip auto-installing when the root package's extra.discovery is enough - -## 1.17.0 - 2023-04-26 - -- [#230](https://github.com/php-http/discovery/pull/230) - Add Psr18Client to make it straightforward to use PSR-18 -- [#232](https://github.com/php-http/discovery/pull/232) - Allow pinning the preferred implementations in composer.json -- [#233](https://github.com/php-http/discovery/pull/233) - Fix Psr17Factory::createServerRequestFromGlobals() when uploaded files have been moved - -## 1.16.0 - 2023-04-26 - -- [#225](https://github.com/php-http/discovery/pull/225) - Remove support for the abandoned Zend Diactoros which has been replaced with Laminas Diactoros; marked the zend library as conflict in composer.json to avoid confusion -- [#227](https://github.com/php-http/discovery/pull/227) - Fix handling requests with nested files - -## 1.15.3 - 2023-03-31 - -- [#224](https://github.com/php-http/discovery/pull/224) - Fix regression with Magento classloader - -## 1.15.2 - 2023-02-11 - -- [#219](https://github.com/php-http/discovery/pull/219) - Fix handling of replaced packages - -## 1.15.1 - 2023-02-10 - -- [#214](https://github.com/php-http/discovery/pull/214) - Fix resolving deps for psr/http-message-implementation -- [#216](https://github.com/php-http/discovery/pull/216) - Fix keeping platform requirements when rebooting composer -- [#217](https://github.com/php-http/discovery/pull/217) - Set extra.plugin-optional composer flag - -## 1.15.0 - 2023-02-09 - -- [#209](https://github.com/php-http/discovery/pull/209) - Add generic `Psr17Factory` class -- [#208](https://github.com/php-http/discovery/pull/208) - Add composer plugin to auto-install missing implementations. - When libraries require an http implementation but no packages providing that implementation is installed in the application, the plugin will automatically install one. - This is only done for libraries that directly require php-http/discovery to avoid unexpected dependency installation. - -## 1.14.3 - 2022-07-11 - -- [#207](https://github.com/php-http/discovery/pull/207) - Updates Exception to extend Throwable solving static analysis errors for consumers - -## 1.14.2 - 2022-05-25 - -- [#202](https://github.com/php-http/discovery/pull/202) - Avoid error when the Symfony PSR-18 client exists but its dependencies are not installed - -## 1.14.1 - 2021-09-18 - -- [#199](https://github.com/php-http/discovery/pull/199) - Fixes message factory discovery for `laminas-diactoros ^2.7` - -## 1.14.0 - 2021-06-21 - -- Deprecate puli as it has been unmaintained for a long time and is not compatible with composer 2 https://github.com/php-http/discovery/pull/195 - -## 1.13.0 - 2020-11-27 - -- Support discovering PSR-17 factories of `slim/psr7` package https://github.com/php-http/discovery/pull/192 - -## 1.12.0 - 2020-09-22 - -- Support discovering HttpClient of `php-http/guzzle7-adapter` https://github.com/php-http/discovery/pull/189 - -## 1.11.0 - 2020-09-22 - -- Use correct method name to find Uri Factory in PSR17 https://github.com/php-http/discovery/pull/181 - -## 1.10.0 - 2020-09-04 - -- Discover PSR-18 implementation of phalcon - -## 1.9.1 - 2020-07-13 - -### Fixed - -- Support PHP 7.4 and 8.0 - -## 1.9.0 - 2020-07-02 - -### Added - -- Support discovering PSR-18 factories of `guzzlehttp/guzzle` 7+ - -## 1.8.0 - 2020-06-14 - -### Added - -- Support discovering PSR-17 factories of `guzzlehttp/psr7` package -- Support discovering PSR-17 factories of `laminas/laminas-diactoros` package -- `ClassDiscovery::getStrategies()` to retrieve the list of current strategies. - -### Fixed - -- Ignore exception during discovery when Symfony HttplugClient checks if HTTPlug is available. - -## 1.7.4 - 2020-01-03 - -### Fixed - -- Improve conditions on Symfony's async HTTPlug client. - -## 1.7.3 - 2019-12-27 - -### Fixed - -- Enough conditions to only use Symfony HTTP client if all needed components are available. - -## 1.7.2 - 2019-12-27 - -### Fixed - -- Allow a condition to specify an interface and not just classes. - -## 1.7.1 - 2019-12-26 - -### Fixed - -- Better conditions to see if Symfony's HTTP clients are available. - -## 1.7.0 - 2019-06-30 - -### Added - -- Dropped support for PHP < 7.1 -- Support for `symfony/http-client` - -## 1.6.1 - 2019-02-23 - -### Fixed - -- MockClientStrategy also provides the mock client when requesting an async client - -## 1.6.0 - 2019-01-23 - -### Added - -- Support for PSR-17 factories -- Support for PSR-18 clients - -## 1.5.2 - 2018-12-31 - -Corrected mistakes in 1.5.1. The different between 1.5.2 and 1.5.0 is that -we removed some PHP 7 code. - -https://github.com/php-http/discovery/compare/1.5.0...1.5.2 - -## 1.5.1 - 2018-12-31 - -This version added new features by mistake. These are reverted in 1.5.2. - -Do not use 1.5.1. - -### Fixed - -- Removed PHP 7 code - -## 1.5.0 - 2018-12-30 - -### Added - -- Support for `nyholm/psr7` version 1.0. -- `ClassDiscovery::safeClassExists` which will help Magento users. -- Support for HTTPlug 2.0 -- Support for Buzz 1.0 -- Better error message when nothing found by introducing a new exception: `NoCandidateFoundException`. - -### Fixed - -- Fixed condition evaluation, it should stop after first invalid condition. - -## 1.4.0 - 2018-02-06 - -### Added - -- Discovery support for nyholm/psr7 - -## 1.3.0 - 2017-08-03 - -### Added - -- Discovery support for CakePHP adapter -- Discovery support for Zend adapter -- Discovery support for Artax adapter - -## 1.2.1 - 2017-03-02 - -### Fixed - -- Fixed minor issue with `MockClientStrategy`, also added more tests. - -## 1.2.0 - 2017-02-12 - -### Added - -- MockClientStrategy class. - -## 1.1.1 - 2016-11-27 - -### Changed - -- Made exception messages clearer. `StrategyUnavailableException` is no longer the previous exception to `DiscoveryFailedException`. -- `CommonClassesStrategy` is using `self` instead of `static`. Using `static` makes no sense when `CommonClassesStrategy` is final. - -## 1.1.0 - 2016-10-20 - -### Added - -- Discovery support for Slim Framework factories - -## 1.0.0 - 2016-07-18 - -### Added - -- Added back `Http\Discovery\NotFoundException` to preserve BC with 0.8 version. You may upgrade from 0.8.x and 0.9.x to 1.0.0 without any BC breaks. -- Added interface `Http\Discovery\Exception` which is implemented by all our exceptions - -### Changed - -- Puli strategy renamed to Puli Beta strategy to prevent incompatibility with a future Puli stable - -### Deprecated - -- For BC reasons, the old `Http\Discovery\NotFoundException` (extending the new exception) will be thrown until version 2.0 - - -## 0.9.1 - 2016-06-28 - -### Changed - -- Dropping PHP 5.4 support because we use the ::class constant. - - -## 0.9.0 - 2016-06-25 - -### Added - -- Discovery strategies to find classes - -### Changed - -- [Puli](http://puli.io) made optional -- Improved exceptions -- **[BC] `NotFoundException` moved to `Http\Discovery\Exception\NotFoundException`** - - -## 0.8.0 - 2016-02-11 - -### Changed - -- Puli composer plugin must be installed separately - - -## 0.7.0 - 2016-01-15 - -### Added - -- Temporary puli.phar (Beta 10) executable - -### Changed - -- Updated HTTPlug dependencies -- Updated Puli dependencies -- Local configuration to make tests passing - -### Removed - -- Puli CLI dependency - - -## 0.6.4 - 2016-01-07 - -### Fixed - -- Puli [not working](https://twitter.com/PuliPHP/status/685132540588507137) with the latest json-schema - - -## 0.6.3 - 2016-01-04 - -### Changed - -- Adjust Puli dependencies - - -## 0.6.2 - 2016-01-04 - -### Changed - -- Make Puli CLI a requirement - - -## 0.6.1 - 2016-01-03 - -### Changed - -- More flexible Puli requirement - - -## 0.6.0 - 2015-12-30 - -### Changed - -- Use [Puli](http://puli.io) for discovery -- Improved exception messages - - -## 0.5.0 - 2015-12-25 - -### Changed - -- Updated message factory dependency (php-http/message) - - -## 0.4.0 - 2015-12-17 - -### Added - -- Array condition evaluation in the Class Discovery - -### Removed - -- Message factories (moved to php-http/utils) - - -## 0.3.0 - 2015-11-18 - -### Added - -- HTTP Async Client Discovery -- Stream factories - -### Changed - -- Discoveries and Factories are final -- Message and Uri factories have the type in their names -- Diactoros Message factory uses Stream factory internally - -### Fixed - -- Improved docblocks for API documentation generation - - -## 0.2.0 - 2015-10-31 - -### Changed - -- Renamed AdapterDiscovery to ClientDiscovery - - -## 0.1.1 - 2015-06-13 - -### Fixed - -- Bad HTTP Adapter class name for Guzzle 5 - - -## 0.1.0 - 2015-06-12 - -### Added - -- Initial release diff --git a/vendor/php-http/discovery/LICENSE b/vendor/php-http/discovery/LICENSE deleted file mode 100644 index 4558d6f06..000000000 --- a/vendor/php-http/discovery/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2015-2016 PHP HTTP Team <team@php-http.org> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/php-http/discovery/README.md b/vendor/php-http/discovery/README.md deleted file mode 100644 index ef7e4991b..000000000 --- a/vendor/php-http/discovery/README.md +++ /dev/null @@ -1,122 +0,0 @@ -# HTTPlug Discovery - -[](https://github.com/php-http/discovery/releases) -[](LICENSE) -[](https://github.com/php-http/discovery/actions/workflows/ci.yml?query=branch%3Amaster) -[](https://scrutinizer-ci.com/g/php-http/discovery) -[](https://scrutinizer-ci.com/g/php-http/discovery) -[](https://packagist.org/packages/php-http/discovery) - -**This library provides auto-discovery and auto-installation of well-known PSR-17, PSR-18 and HTTPlug implementations.** - - -## Install - -Via Composer - -``` bash -composer require php-http/discovery -``` - - -## Usage as a library author - -Please see the [official documentation](http://php-http.readthedocs.org/en/latest/discovery.html). - -If your library/SDK needs a PSR-18 client, here is a quick example. - -First, you need to install a PSR-18 client and a PSR-17 factory implementations. -This should be done only for dev dependencies as you don't want to force a -specific implementation on your users: - -```bash -composer require --dev symfony/http-client -composer require --dev nyholm/psr7 -``` - -Then, you can disable the Composer plugin embeded in `php-http/discovery` -because you just installed the dev dependencies you need for testing: - -```bash -composer config allow-plugins.php-http/discovery false -``` - -Finally, you need to require `php-http/discovery` and the generic implementations -that your library is going to need: - -```bash -composer require 'php-http/discovery:^1.17' -composer require 'psr/http-client-implementation:*' -composer require 'psr/http-factory-implementation:*' -``` - -Now, you're ready to make an HTTP request: - -```php -use Http\Discovery\Psr18Client; - -$client = new Psr18Client(); - -$request = $client->createRequest('GET', 'https://example.com'); -$response = $client->sendRequest($request); -``` - -Internally, this code will use whatever PSR-7, PSR-17 and PSR-18 implementations -that your users have installed. - - -## Usage as a library user - -If you use a library/SDK that requires `php-http/discovery`, you can configure -the auto-discovery mechanism to use a specific implementation when many are -available in your project. - -For example, if you have both `nyholm/psr7` and `guzzlehttp/guzzle` in your -project, you can tell `php-http/discovery` to use `guzzlehttp/guzzle` instead of -`nyholm/psr7` by running the following command: - -```bash -composer config extra.discovery.psr/http-factory-implementation GuzzleHttp\\Psr7\\HttpFactory -``` - -This will update your `composer.json` file to add the following configuration: - -```json -{ - "extra": { - "discovery": { - "psr/http-factory-implementation": "GuzzleHttp\\Psr7\\HttpFactory" - } - } -} -``` - -Don't forget to run `composer install` to apply the changes, and ensure that -the composer plugin is enabled: - -```bash -composer config allow-plugins.php-http/discovery true -composer install -``` - - -## Testing - -``` bash -composer test -``` - - -## Contributing - -Please see our [contributing guide](http://docs.php-http.org/en/latest/development/contributing.html). - - -## Security - -If you discover any security related issues, please contact us at [security@php-http.org](mailto:security@php-http.org). - - -## License - -The MIT License (MIT). Please see [License File](LICENSE) for more information. diff --git a/vendor/php-http/discovery/composer.json b/vendor/php-http/discovery/composer.json deleted file mode 100644 index d38ab83b3..000000000 --- a/vendor/php-http/discovery/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "php-http/discovery", - "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations", - "type": "composer-plugin", - "license": "MIT", - "keywords": ["http", "discovery", "client", "adapter", "message", "factory", "psr7", "psr17"], - "homepage": "http://php-http.org", - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "provide": { - "php-http/async-client-implementation": "*", - "php-http/client-implementation": "*", - "psr/http-client-implementation": "*", - "psr/http-factory-implementation": "*", - "psr/http-message-implementation": "*" - }, - "require": { - "php": "^7.1 || ^8.0", - "composer-plugin-api": "^1.0|^2.0" - }, - "require-dev": { - "composer/composer": "^1.0.2|^2.0", - "graham-campbell/phpspec-skip-example-extension": "^5.0", - "php-http/httplug": "^1.0 || ^2.0", - "php-http/message-factory": "^1.0", - "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3", - "symfony/phpunit-bridge": "^6.2" - }, - "autoload": { - "psr-4": { - "Http\\Discovery\\": "src/" - }, - "exclude-from-classmap": [ - "src/Composer/Plugin.php" - ] - }, - "autoload-dev": { - "psr-4": { - "spec\\Http\\Discovery\\": "spec/" - } - }, - "scripts": { - "test": [ - "vendor/bin/phpspec run", - "vendor/bin/simple-phpunit --group NothingInstalled" - ], - "test-ci": "vendor/bin/phpspec run -c phpspec.ci.yml" - }, - "extra": { - "class": "Http\\Discovery\\Composer\\Plugin", - "plugin-optional": true - }, - "conflict": { - "nyholm/psr7": "<1.0", - "zendframework/zend-diactoros": "*" - }, - "prefer-stable": true, - "minimum-stability": "beta" -} diff --git a/vendor/php-http/discovery/src/ClassDiscovery.php b/vendor/php-http/discovery/src/ClassDiscovery.php deleted file mode 100644 index 5ea469797..000000000 --- a/vendor/php-http/discovery/src/ClassDiscovery.php +++ /dev/null @@ -1,255 +0,0 @@ -<?php - -namespace Http\Discovery; - -use Http\Discovery\Exception\ClassInstantiationFailedException; -use Http\Discovery\Exception\DiscoveryFailedException; -use Http\Discovery\Exception\NoCandidateFoundException; -use Http\Discovery\Exception\StrategyUnavailableException; -use Http\Discovery\Strategy\DiscoveryStrategy; - -/** - * Registry that based find results on class existence. - * - * @author David de Boer <david@ddeboer.nl> - * @author Márk Sági-Kazár <mark.sagikazar@gmail.com> - * @author Tobias Nyholm <tobias.nyholm@gmail.com> - */ -abstract class ClassDiscovery -{ - /** - * A list of strategies to find classes. - * - * @var DiscoveryStrategy[] - */ - private static $strategies = [ - Strategy\GeneratedDiscoveryStrategy::class, - Strategy\CommonClassesStrategy::class, - Strategy\CommonPsr17ClassesStrategy::class, - Strategy\PuliBetaStrategy::class, - ]; - - private static $deprecatedStrategies = [ - Strategy\PuliBetaStrategy::class => true, - ]; - - /** - * Discovery cache to make the second time we use discovery faster. - * - * @var array - */ - private static $cache = []; - - /** - * Finds a class. - * - * @param string $type - * - * @return string|\Closure - * - * @throws DiscoveryFailedException - */ - protected static function findOneByType($type) - { - // Look in the cache - if (null !== ($class = self::getFromCache($type))) { - return $class; - } - - static $skipStrategy; - $skipStrategy ?? $skipStrategy = self::safeClassExists(Strategy\GeneratedDiscoveryStrategy::class) ? false : Strategy\GeneratedDiscoveryStrategy::class; - - $exceptions = []; - foreach (self::$strategies as $strategy) { - if ($skipStrategy === $strategy) { - continue; - } - - try { - $candidates = $strategy::getCandidates($type); - } catch (StrategyUnavailableException $e) { - if (!isset(self::$deprecatedStrategies[$strategy])) { - $exceptions[] = $e; - } - - continue; - } - - foreach ($candidates as $candidate) { - if (isset($candidate['condition'])) { - if (!self::evaluateCondition($candidate['condition'])) { - continue; - } - } - - // save the result for later use - self::storeInCache($type, $candidate); - - return $candidate['class']; - } - - $exceptions[] = new NoCandidateFoundException($strategy, $candidates); - } - - throw DiscoveryFailedException::create($exceptions); - } - - /** - * Get a value from cache. - * - * @param string $type - * - * @return string|null - */ - private static function getFromCache($type) - { - if (!isset(self::$cache[$type])) { - return; - } - - $candidate = self::$cache[$type]; - if (isset($candidate['condition'])) { - if (!self::evaluateCondition($candidate['condition'])) { - return; - } - } - - return $candidate['class']; - } - - /** - * Store a value in cache. - * - * @param string $type - * @param string $class - */ - private static function storeInCache($type, $class) - { - self::$cache[$type] = $class; - } - - /** - * Set new strategies and clear the cache. - * - * @param string[] $strategies list of fully qualified class names that implement DiscoveryStrategy - */ - public static function setStrategies(array $strategies) - { - self::$strategies = $strategies; - self::clearCache(); - } - - /** - * Returns the currently configured discovery strategies as fully qualified class names. - * - * @return string[] - */ - public static function getStrategies(): iterable - { - return self::$strategies; - } - - /** - * Append a strategy at the end of the strategy queue. - * - * @param string $strategy Fully qualified class name of a DiscoveryStrategy - */ - public static function appendStrategy($strategy) - { - self::$strategies[] = $strategy; - self::clearCache(); - } - - /** - * Prepend a strategy at the beginning of the strategy queue. - * - * @param string $strategy Fully qualified class name to a DiscoveryStrategy - */ - public static function prependStrategy($strategy) - { - array_unshift(self::$strategies, $strategy); - self::clearCache(); - } - - public static function clearCache() - { - self::$cache = []; - } - - /** - * Evaluates conditions to boolean. - * - * @return bool - */ - protected static function evaluateCondition($condition) - { - if (is_string($condition)) { - // Should be extended for functions, extensions??? - return self::safeClassExists($condition); - } - if (is_callable($condition)) { - return (bool) $condition(); - } - if (is_bool($condition)) { - return $condition; - } - if (is_array($condition)) { - foreach ($condition as $c) { - if (false === static::evaluateCondition($c)) { - // Immediately stop execution if the condition is false - return false; - } - } - - return true; - } - - return false; - } - - /** - * Get an instance of the $class. - * - * @param string|\Closure $class a FQCN of a class or a closure that instantiate the class - * - * @return object - * - * @throws ClassInstantiationFailedException - */ - protected static function instantiateClass($class) - { - try { - if (is_string($class)) { - return new $class(); - } - - if (is_callable($class)) { - return $class(); - } - } catch (\Exception $e) { - throw new ClassInstantiationFailedException('Unexpected exception when instantiating class.', 0, $e); - } - - throw new ClassInstantiationFailedException('Could not instantiate class because parameter is neither a callable nor a string'); - } - - /** - * We need a "safe" version of PHP's "class_exists" because Magento has a bug - * (or they call it a "feature"). Magento is throwing an exception if you do class_exists() - * on a class that ends with "Factory" and if that file does not exits. - * - * This function catches all potential exceptions and makes sure to always return a boolean. - * - * @param string $class - * - * @return bool - */ - public static function safeClassExists($class) - { - try { - return class_exists($class) || interface_exists($class); - } catch (\Exception $e) { - return false; - } - } -} diff --git a/vendor/php-http/discovery/src/Composer/Plugin.php b/vendor/php-http/discovery/src/Composer/Plugin.php deleted file mode 100644 index 32ef401e3..000000000 --- a/vendor/php-http/discovery/src/Composer/Plugin.php +++ /dev/null @@ -1,465 +0,0 @@ -<?php - -namespace Http\Discovery\Composer; - -use Composer\Composer; -use Composer\DependencyResolver\Pool; -use Composer\EventDispatcher\EventSubscriberInterface; -use Composer\Factory; -use Composer\Installer; -use Composer\IO\IOInterface; -use Composer\Json\JsonFile; -use Composer\Json\JsonManipulator; -use Composer\Package\Locker; -use Composer\Package\Version\VersionParser; -use Composer\Package\Version\VersionSelector; -use Composer\Plugin\PluginInterface; -use Composer\Repository\InstalledRepositoryInterface; -use Composer\Repository\RepositorySet; -use Composer\Script\Event; -use Composer\Script\ScriptEvents; -use Composer\Util\Filesystem; -use Http\Discovery\ClassDiscovery; - -/** - * Auto-installs missing implementations. - * - * When a dependency requires both this package and one of the supported `*-implementation` - * virtual packages, this plugin will auto-install a well-known implementation if none is - * found. The plugin will first look at already installed packages and figure out the - * preferred implementation to install based on the below stickyness rules (or on the first - * listed implementation if no rules match.) - * - * Don't miss updating src/Strategy/Common*Strategy.php when adding a new supported package. - * - * @author Nicolas Grekas <p@tchwork.com> - * - * @internal - */ -class Plugin implements PluginInterface, EventSubscriberInterface -{ - /** - * Describes, for every supported virtual implementation, which packages - * provide said implementation and which extra dependencies each package - * requires to provide the implementation. - */ - private const PROVIDE_RULES = [ - 'php-http/async-client-implementation' => [ - 'symfony/http-client:>=6.3' => ['guzzlehttp/promises', 'psr/http-factory-implementation', 'php-http/httplug'], - 'symfony/http-client' => ['guzzlehttp/promises', 'php-http/message-factory', 'psr/http-factory-implementation', 'php-http/httplug'], - 'php-http/guzzle7-adapter' => [], - 'php-http/guzzle6-adapter' => [], - 'php-http/curl-client' => [], - 'php-http/react-adapter' => [], - ], - 'php-http/client-implementation' => [ - 'symfony/http-client:>=6.3' => ['psr/http-factory-implementation', 'php-http/httplug'], - 'symfony/http-client' => ['php-http/message-factory', 'psr/http-factory-implementation', 'php-http/httplug'], - 'php-http/guzzle7-adapter' => [], - 'php-http/guzzle6-adapter' => [], - 'php-http/cakephp-adapter' => [], - 'php-http/curl-client' => [], - 'php-http/react-adapter' => [], - 'php-http/buzz-adapter' => [], - 'php-http/artax-adapter' => [], - 'kriswallsmith/buzz:^1' => [], - ], - 'psr/http-client-implementation' => [ - 'symfony/http-client' => ['psr/http-factory-implementation', 'psr/http-client'], - 'guzzlehttp/guzzle' => [], - 'kriswallsmith/buzz:^1' => [], - ], - 'psr/http-message-implementation' => [ - 'php-http/discovery' => ['psr/http-factory-implementation'], - ], - 'psr/http-factory-implementation' => [ - 'nyholm/psr7' => [], - 'guzzlehttp/psr7:>=2' => [], - 'slim/psr7' => [], - 'laminas/laminas-diactoros' => [], - 'phalcon/cphalcon:^4' => [], - 'http-interop/http-factory-guzzle' => [], - 'http-interop/http-factory-diactoros' => [], - 'http-interop/http-factory-slim' => [], - 'httpsoft/http-message' => [], - ], - ]; - - /** - * Describes which package should be preferred on the left side - * depending on which one is already installed on the right side. - */ - private const STICKYNESS_RULES = [ - 'symfony/http-client' => 'symfony/framework-bundle', - 'php-http/guzzle7-adapter' => 'guzzlehttp/guzzle:^7', - 'php-http/guzzle6-adapter' => 'guzzlehttp/guzzle:^6', - 'php-http/guzzle5-adapter' => 'guzzlehttp/guzzle:^5', - 'php-http/cakephp-adapter' => 'cakephp/cakephp', - 'php-http/react-adapter' => 'react/event-loop', - 'php-http/buzz-adapter' => 'kriswallsmith/buzz:^0.15.1', - 'php-http/artax-adapter' => 'amphp/artax:^3', - 'http-interop/http-factory-guzzle' => 'guzzlehttp/psr7:^1', - 'http-interop/http-factory-slim' => 'slim/slim:^3', - ]; - - private const INTERFACE_MAP = [ - 'php-http/async-client-implementation' => [ - 'Http\Client\HttpAsyncClient', - ], - 'php-http/client-implementation' => [ - 'Http\Client\HttpClient', - ], - 'psr/http-client-implementation' => [ - 'Psr\Http\Client\ClientInterface', - ], - 'psr/http-factory-implementation' => [ - 'Psr\Http\Message\RequestFactoryInterface', - 'Psr\Http\Message\ResponseFactoryInterface', - 'Psr\Http\Message\ServerRequestFactoryInterface', - 'Psr\Http\Message\StreamFactoryInterface', - 'Psr\Http\Message\UploadedFileFactoryInterface', - 'Psr\Http\Message\UriFactoryInterface', - ], - ]; - - public static function getSubscribedEvents(): array - { - return [ - ScriptEvents::PRE_AUTOLOAD_DUMP => 'preAutoloadDump', - ScriptEvents::POST_UPDATE_CMD => 'postUpdate', - ]; - } - - public function activate(Composer $composer, IOInterface $io): void - { - } - - public function deactivate(Composer $composer, IOInterface $io) - { - } - - public function uninstall(Composer $composer, IOInterface $io) - { - } - - public function postUpdate(Event $event) - { - $composer = $event->getComposer(); - $repo = $composer->getRepositoryManager()->getLocalRepository(); - $requires = [ - $composer->getPackage()->getRequires(), - $composer->getPackage()->getDevRequires(), - ]; - $pinnedAbstractions = []; - $pinned = $composer->getPackage()->getExtra()['discovery'] ?? []; - foreach (self::INTERFACE_MAP as $abstraction => $interfaces) { - foreach (isset($pinned[$abstraction]) ? [] : $interfaces as $interface) { - if (!isset($pinned[$interface])) { - continue 2; - } - } - $pinnedAbstractions[$abstraction] = true; - } - - $missingRequires = $this->getMissingRequires($repo, $requires, 'project' === $composer->getPackage()->getType(), $pinnedAbstractions); - $missingRequires = [ - 'require' => array_fill_keys(array_merge([], ...array_values($missingRequires[0])), '*'), - 'require-dev' => array_fill_keys(array_merge([], ...array_values($missingRequires[1])), '*'), - 'remove' => array_fill_keys(array_merge([], ...array_values($missingRequires[2])), '*'), - ]; - - if (!$missingRequires = array_filter($missingRequires)) { - return; - } - - $composerJsonContents = file_get_contents(Factory::getComposerFile()); - $this->updateComposerJson($missingRequires, $composer->getConfig()->get('sort-packages')); - - $installer = null; - // Find the composer installer, hack borrowed from symfony/flex - foreach (debug_backtrace(\DEBUG_BACKTRACE_PROVIDE_OBJECT) as $trace) { - if (isset($trace['object']) && $trace['object'] instanceof Installer) { - $installer = $trace['object']; - break; - } - } - - if (!$installer) { - return; - } - - $event->stopPropagation(); - - $dispatcher = $composer->getEventDispatcher(); - $disableScripts = !method_exists($dispatcher, 'setRunScripts') || !((array) $dispatcher)["\0*\0runScripts"]; - $composer = Factory::create($event->getIO(), null, false, $disableScripts); - - /** @var Installer $installer */ - $installer = clone $installer; - if (method_exists($installer, 'setAudit')) { - $trace['object']->setAudit(false); - } - // we need a clone of the installer to preserve its configuration state but with our own service objects - $installer->__construct( - $event->getIO(), - $composer->getConfig(), - $composer->getPackage(), - $composer->getDownloadManager(), - $composer->getRepositoryManager(), - $composer->getLocker(), - $composer->getInstallationManager(), - $composer->getEventDispatcher(), - $composer->getAutoloadGenerator() - ); - if (method_exists($installer, 'setPlatformRequirementFilter')) { - $installer->setPlatformRequirementFilter(((array) $trace['object'])["\0*\0platformRequirementFilter"]); - } - - if (0 !== $installer->run()) { - file_put_contents(Factory::getComposerFile(), $composerJsonContents); - - return; - } - - $versionSelector = new VersionSelector(ClassDiscovery::safeClassExists(RepositorySet::class) ? new RepositorySet() : new Pool()); - $updateComposerJson = false; - - foreach ($composer->getRepositoryManager()->getLocalRepository()->getPackages() as $package) { - foreach (['require', 'require-dev'] as $key) { - if (!isset($missingRequires[$key][$package->getName()])) { - continue; - } - $updateComposerJson = true; - $missingRequires[$key][$package->getName()] = $versionSelector->findRecommendedRequireVersion($package); - } - } - - if ($updateComposerJson) { - $this->updateComposerJson($missingRequires, $composer->getConfig()->get('sort-packages')); - $this->updateComposerLock($composer, $event->getIO()); - } - } - - public function getMissingRequires(InstalledRepositoryInterface $repo, array $requires, bool $isProject, array $pinnedAbstractions): array - { - $allPackages = []; - $devPackages = method_exists($repo, 'getDevPackageNames') ? array_fill_keys($repo->getDevPackageNames(), true) : []; - - // One must require "php-http/discovery" - // to opt-in for auto-installation of virtual package implementations - if (!isset($requires[0]['php-http/discovery'])) { - $requires = [[], []]; - } - - foreach ($repo->getPackages() as $package) { - $allPackages[$package->getName()] = true; - - if (1 < \count($names = $package->getNames(false))) { - $allPackages += array_fill_keys($names, false); - - if (isset($devPackages[$package->getName()])) { - $devPackages += $names; - } - } - - if (isset($package->getRequires()['php-http/discovery'])) { - $requires[(int) isset($devPackages[$package->getName()])] += $package->getRequires(); - } - } - - $missingRequires = [[], [], []]; - $versionParser = new VersionParser(); - - if (ClassDiscovery::safeClassExists(\Phalcon\Http\Message\RequestFactory::class, false)) { - $missingRequires[0]['psr/http-factory-implementation'] = []; - $missingRequires[1]['psr/http-factory-implementation'] = []; - } - - foreach ($requires as $dev => $rules) { - $abstractions = []; - $rules = array_intersect_key(self::PROVIDE_RULES, $rules); - - while ($rules) { - $abstraction = key($rules); - - if (isset($pinnedAbstractions[$abstraction])) { - unset($rules[$abstraction]); - continue; - } - - $abstractions[] = $abstraction; - - foreach (array_shift($rules) as $candidate => $deps) { - [$candidate, $version] = explode(':', $candidate, 2) + [1 => null]; - - if (!isset($allPackages[$candidate])) { - continue; - } - if (null !== $version && !$repo->findPackage($candidate, $versionParser->parseConstraints($version))) { - continue; - } - if ($isProject && !$dev && isset($devPackages[$candidate])) { - $missingRequires[0][$abstraction] = [$candidate]; - $missingRequires[2][$abstraction] = [$candidate]; - } else { - $missingRequires[$dev][$abstraction] = []; - } - - foreach ($deps as $dep) { - if (isset(self::PROVIDE_RULES[$dep])) { - $rules[$dep] = self::PROVIDE_RULES[$dep]; - } elseif (!isset($allPackages[$dep])) { - $missingRequires[$dev][$abstraction][] = $dep; - } elseif ($isProject && !$dev && isset($devPackages[$dep])) { - $missingRequires[0][$abstraction][] = $dep; - $missingRequires[2][$abstraction][] = $dep; - } - } - break; - } - } - - while ($abstractions) { - $abstraction = array_shift($abstractions); - - if (isset($missingRequires[$dev][$abstraction])) { - continue; - } - $candidates = self::PROVIDE_RULES[$abstraction]; - - foreach ($candidates as $candidate => $deps) { - [$candidate, $version] = explode(':', $candidate, 2) + [1 => null]; - - if (null !== $version && !$repo->findPackage($candidate, $versionParser->parseConstraints($version))) { - continue; - } - if (isset($allPackages[$candidate]) && (!$isProject || $dev || !isset($devPackages[$candidate]))) { - continue 2; - } - } - - foreach (array_intersect_key(self::STICKYNESS_RULES, $candidates) as $candidate => $stickyRule) { - [$stickyName, $stickyVersion] = explode(':', $stickyRule, 2) + [1 => null]; - if (!isset($allPackages[$stickyName]) || ($isProject && !$dev && isset($devPackages[$stickyName]))) { - continue; - } - if (null !== $stickyVersion && !$repo->findPackage($stickyName, $versionParser->parseConstraints($stickyVersion))) { - continue; - } - - $candidates = [$candidate => $candidates[$candidate]]; - break; - } - - $dep = key($candidates); - [$dep] = explode(':', $dep, 2); - $missingRequires[$dev][$abstraction] = [$dep]; - - if ($isProject && !$dev && isset($devPackages[$dep])) { - $missingRequires[2][$abstraction][] = $dep; - } - } - } - - $missingRequires[1] = array_diff_key($missingRequires[1], $missingRequires[0]); - - return $missingRequires; - } - - public function preAutoloadDump(Event $event) - { - $filesystem = new Filesystem(); - // Double realpath() on purpose, see https://bugs.php.net/72738 - $vendorDir = $filesystem->normalizePath(realpath(realpath($event->getComposer()->getConfig()->get('vendor-dir')))); - $filesystem->ensureDirectoryExists($vendorDir.'/composer'); - $pinned = $event->getComposer()->getPackage()->getExtra()['discovery'] ?? []; - $candidates = []; - - $allInterfaces = array_merge(...array_values(self::INTERFACE_MAP)); - foreach ($pinned as $abstraction => $class) { - if (isset(self::INTERFACE_MAP[$abstraction])) { - $interfaces = self::INTERFACE_MAP[$abstraction]; - } elseif (false !== $k = array_search($abstraction, $allInterfaces, true)) { - $interfaces = [$allInterfaces[$k]]; - } else { - throw new \UnexpectedValueException(sprintf('Invalid "extra.discovery" pinned in composer.json: "%s" is not one of ["%s"].', $abstraction, implode('", "', array_keys(self::INTERFACE_MAP)))); - } - - foreach ($interfaces as $interface) { - $candidates[] = sprintf("case %s: return [['class' => %s]];\n", var_export($interface, true), var_export($class, true)); - } - } - - $file = $vendorDir.'/composer/GeneratedDiscoveryStrategy.php'; - - if (!$candidates) { - if (file_exists($file)) { - unlink($file); - } - - return; - } - - $candidates = implode(' ', $candidates); - $code = <<<EOPHP -<?php - -namespace Http\Discovery\Strategy; - -class GeneratedDiscoveryStrategy implements DiscoveryStrategy -{ - public static function getCandidates(\$type) - { - switch (\$type) { - $candidates - default: return []; - } - } -} - -EOPHP - ; - - if (!file_exists($file) || $code !== file_get_contents($file)) { - file_put_contents($file, $code); - } - - $rootPackage = $event->getComposer()->getPackage(); - $autoload = $rootPackage->getAutoload(); - $autoload['classmap'][] = $vendorDir.'/composer/GeneratedDiscoveryStrategy.php'; - $rootPackage->setAutoload($autoload); - } - - private function updateComposerJson(array $missingRequires, bool $sortPackages) - { - $file = Factory::getComposerFile(); - $contents = file_get_contents($file); - - $manipulator = new JsonManipulator($contents); - - foreach ($missingRequires as $key => $packages) { - foreach ($packages as $package => $constraint) { - if ('remove' === $key) { - $manipulator->removeSubNode('require-dev', $package); - } else { - $manipulator->addLink($key, $package, $constraint, $sortPackages); - } - } - } - - file_put_contents($file, $manipulator->getContents()); - } - - private function updateComposerLock(Composer $composer, IOInterface $io) - { - $lock = substr(Factory::getComposerFile(), 0, -4).'lock'; - $composerJson = file_get_contents(Factory::getComposerFile()); - $lockFile = new JsonFile($lock, null, $io); - $locker = ClassDiscovery::safeClassExists(RepositorySet::class) - ? new Locker($io, $lockFile, $composer->getInstallationManager(), $composerJson) - : new Locker($io, $lockFile, $composer->getRepositoryManager(), $composer->getInstallationManager(), $composerJson); - $lockData = $locker->getLockData(); - $lockData['content-hash'] = Locker::getContentHash($composerJson); - $lockFile->write($lockData); - } -} diff --git a/vendor/php-http/discovery/src/Exception.php b/vendor/php-http/discovery/src/Exception.php deleted file mode 100644 index 0fa8c767e..000000000 --- a/vendor/php-http/discovery/src/Exception.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - -namespace Http\Discovery; - -/** - * An interface implemented by all discovery related exceptions. - * - * @author Tobias Nyholm <tobias.nyholm@gmail.com> - */ -interface Exception extends \Throwable -{ -} diff --git a/vendor/php-http/discovery/src/Exception/ClassInstantiationFailedException.php b/vendor/php-http/discovery/src/Exception/ClassInstantiationFailedException.php deleted file mode 100644 index e95bf5d82..000000000 --- a/vendor/php-http/discovery/src/Exception/ClassInstantiationFailedException.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - -namespace Http\Discovery\Exception; - -use Http\Discovery\Exception; - -/** - * Thrown when a class fails to instantiate. - * - * @author Tobias Nyholm <tobias.nyholm@gmail.com> - */ -final class ClassInstantiationFailedException extends \RuntimeException implements Exception -{ -} diff --git a/vendor/php-http/discovery/src/Exception/DiscoveryFailedException.php b/vendor/php-http/discovery/src/Exception/DiscoveryFailedException.php deleted file mode 100644 index 304b7276e..000000000 --- a/vendor/php-http/discovery/src/Exception/DiscoveryFailedException.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php - -namespace Http\Discovery\Exception; - -use Http\Discovery\Exception; - -/** - * Thrown when all discovery strategies fails to find a resource. - * - * @author Tobias Nyholm <tobias.nyholm@gmail.com> - */ -final class DiscoveryFailedException extends \Exception implements Exception -{ - /** - * @var \Exception[] - */ - private $exceptions; - - /** - * @param string $message - * @param \Exception[] $exceptions - */ - public function __construct($message, array $exceptions = []) - { - $this->exceptions = $exceptions; - - parent::__construct($message); - } - - /** - * @param \Exception[] $exceptions - */ - public static function create($exceptions) - { - $message = 'Could not find resource using any discovery strategy. Find more information at http://docs.php-http.org/en/latest/discovery.html#common-errors'; - foreach ($exceptions as $e) { - $message .= "\n - ".$e->getMessage(); - } - $message .= "\n\n"; - - return new self($message, $exceptions); - } - - /** - * @return \Exception[] - */ - public function getExceptions() - { - return $this->exceptions; - } -} diff --git a/vendor/php-http/discovery/src/Exception/NoCandidateFoundException.php b/vendor/php-http/discovery/src/Exception/NoCandidateFoundException.php deleted file mode 100644 index 32f65db7b..000000000 --- a/vendor/php-http/discovery/src/Exception/NoCandidateFoundException.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php - -namespace Http\Discovery\Exception; - -use Http\Discovery\Exception; - -/** - * When we have used a strategy but no candidates provided by that strategy could be used. - * - * @author Tobias Nyholm <tobias.nyholm@gmail.com> - */ -final class NoCandidateFoundException extends \Exception implements Exception -{ - /** - * @param string $strategy - */ - public function __construct($strategy, array $candidates) - { - $classes = array_map( - function ($a) { - return $a['class']; - }, - $candidates - ); - - $message = sprintf( - 'No valid candidate found using strategy "%s". We tested the following candidates: %s.', - $strategy, - implode(', ', array_map([$this, 'stringify'], $classes)) - ); - - parent::__construct($message); - } - - private function stringify($mixed) - { - if (is_string($mixed)) { - return $mixed; - } - - if (is_array($mixed) && 2 === count($mixed)) { - return sprintf('%s::%s', $this->stringify($mixed[0]), $mixed[1]); - } - - return is_object($mixed) ? get_class($mixed) : gettype($mixed); - } -} diff --git a/vendor/php-http/discovery/src/Exception/NotFoundException.php b/vendor/php-http/discovery/src/Exception/NotFoundException.php deleted file mode 100644 index ef8b9c584..000000000 --- a/vendor/php-http/discovery/src/Exception/NotFoundException.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -namespace Http\Discovery\Exception; - -use Http\Discovery\Exception; - -/** - * Thrown when a discovery does not find any matches. - * - * @final do NOT extend this class, not final for BC reasons - * - * @author Márk Sági-Kazár <mark.sagikazar@gmail.com> - */ -/* final */ class NotFoundException extends \RuntimeException implements Exception -{ -} diff --git a/vendor/php-http/discovery/src/Exception/PuliUnavailableException.php b/vendor/php-http/discovery/src/Exception/PuliUnavailableException.php deleted file mode 100644 index a6ade7332..000000000 --- a/vendor/php-http/discovery/src/Exception/PuliUnavailableException.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - -namespace Http\Discovery\Exception; - -/** - * Thrown when we can't use Puli for discovery. - * - * @author Tobias Nyholm <tobias.nyholm@gmail.com> - */ -final class PuliUnavailableException extends StrategyUnavailableException -{ -} diff --git a/vendor/php-http/discovery/src/Exception/StrategyUnavailableException.php b/vendor/php-http/discovery/src/Exception/StrategyUnavailableException.php deleted file mode 100644 index 89ecf3523..000000000 --- a/vendor/php-http/discovery/src/Exception/StrategyUnavailableException.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php - -namespace Http\Discovery\Exception; - -use Http\Discovery\Exception; - -/** - * This exception is thrown when we cannot use a discovery strategy. This is *not* thrown when - * the discovery fails to find a class. - * - * @author Tobias Nyholm <tobias.nyholm@gmail.com> - */ -class StrategyUnavailableException extends \RuntimeException implements Exception -{ -} diff --git a/vendor/php-http/discovery/src/HttpAsyncClientDiscovery.php b/vendor/php-http/discovery/src/HttpAsyncClientDiscovery.php deleted file mode 100644 index a0c4d5b7c..000000000 --- a/vendor/php-http/discovery/src/HttpAsyncClientDiscovery.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -namespace Http\Discovery; - -use Http\Client\HttpAsyncClient; -use Http\Discovery\Exception\DiscoveryFailedException; - -/** - * Finds an HTTP Asynchronous Client. - * - * @author Joel Wurtz <joel.wurtz@gmail.com> - */ -final class HttpAsyncClientDiscovery extends ClassDiscovery -{ - /** - * Finds an HTTP Async Client. - * - * @return HttpAsyncClient - * - * @throws Exception\NotFoundException - */ - public static function find() - { - try { - $asyncClient = static::findOneByType(HttpAsyncClient::class); - } catch (DiscoveryFailedException $e) { - throw new NotFoundException('No HTTPlug async clients found. Make sure to install a package providing "php-http/async-client-implementation". Example: "php-http/guzzle6-adapter".', 0, $e); - } - - return static::instantiateClass($asyncClient); - } -} diff --git a/vendor/php-http/discovery/src/HttpClientDiscovery.php b/vendor/php-http/discovery/src/HttpClientDiscovery.php deleted file mode 100644 index 2501e5bbf..000000000 --- a/vendor/php-http/discovery/src/HttpClientDiscovery.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -namespace Http\Discovery; - -use Http\Client\HttpClient; -use Http\Discovery\Exception\DiscoveryFailedException; - -/** - * Finds an HTTP Client. - * - * @author Márk Sági-Kazár <mark.sagikazar@gmail.com> - * - * @deprecated This will be removed in 2.0. Consider using Psr18ClientDiscovery. - */ -final class HttpClientDiscovery extends ClassDiscovery -{ - /** - * Finds an HTTP Client. - * - * @return HttpClient - * - * @throws Exception\NotFoundException - */ - public static function find() - { - try { - $client = static::findOneByType(HttpClient::class); - } catch (DiscoveryFailedException $e) { - throw new NotFoundException('No HTTPlug clients found. Make sure to install a package providing "php-http/client-implementation". Example: "php-http/guzzle6-adapter".', 0, $e); - } - - return static::instantiateClass($client); - } -} diff --git a/vendor/php-http/discovery/src/MessageFactoryDiscovery.php b/vendor/php-http/discovery/src/MessageFactoryDiscovery.php deleted file mode 100644 index 4ae104aa6..000000000 --- a/vendor/php-http/discovery/src/MessageFactoryDiscovery.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -namespace Http\Discovery; - -use Http\Discovery\Exception\DiscoveryFailedException; -use Http\Message\MessageFactory; - -/** - * Finds a Message Factory. - * - * @author Márk Sági-Kazár <mark.sagikazar@gmail.com> - * - * @deprecated This will be removed in 2.0. Consider using Psr17FactoryDiscovery. - */ -final class MessageFactoryDiscovery extends ClassDiscovery -{ - /** - * Finds a Message Factory. - * - * @return MessageFactory - * - * @throws Exception\NotFoundException - */ - public static function find() - { - try { - $messageFactory = static::findOneByType(MessageFactory::class); - } catch (DiscoveryFailedException $e) { - throw new NotFoundException('No php-http message factories found. Note that the php-http message factories are deprecated in favor of the PSR-17 message factories. To use the legacy Guzzle, Diactoros or Slim Framework factories of php-http, install php-http/message and php-http/message-factory and the chosen message implementation.', 0, $e); - } - - return static::instantiateClass($messageFactory); - } -} diff --git a/vendor/php-http/discovery/src/NotFoundException.php b/vendor/php-http/discovery/src/NotFoundException.php deleted file mode 100644 index d59dadbf8..000000000 --- a/vendor/php-http/discovery/src/NotFoundException.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - -namespace Http\Discovery; - -/** - * Thrown when a discovery does not find any matches. - * - * @author Márk Sági-Kazár <mark.sagikazar@gmail.com> - * - * @deprecated since since version 1.0, and will be removed in 2.0. Use {@link \Http\Discovery\Exception\NotFoundException} instead. - */ -final class NotFoundException extends \Http\Discovery\Exception\NotFoundException -{ -} diff --git a/vendor/php-http/discovery/src/Psr17Factory.php b/vendor/php-http/discovery/src/Psr17Factory.php deleted file mode 100644 index 5d3ab9273..000000000 --- a/vendor/php-http/discovery/src/Psr17Factory.php +++ /dev/null @@ -1,303 +0,0 @@ -<?php - -namespace Http\Discovery; - -use Psr\Http\Message\RequestFactoryInterface; -use Psr\Http\Message\RequestInterface; -use Psr\Http\Message\ResponseFactoryInterface; -use Psr\Http\Message\ResponseInterface; -use Psr\Http\Message\ServerRequestFactoryInterface; -use Psr\Http\Message\ServerRequestInterface; -use Psr\Http\Message\StreamFactoryInterface; -use Psr\Http\Message\StreamInterface; -use Psr\Http\Message\UploadedFileFactoryInterface; -use Psr\Http\Message\UploadedFileInterface; -use Psr\Http\Message\UriFactoryInterface; -use Psr\Http\Message\UriInterface; - -/** - * A generic PSR-17 implementation. - * - * You can create this class with concrete factory instances or let - * it use discovery to find suitable implementations as needed. - * - * This class also provides two additional methods that are not in PSR17, - * to help with creating PSR-7 objects from PHP superglobals: - * - createServerRequestFromGlobals() - * - createUriFromGlobals() - * - * The code in this class is inspired by the "nyholm/psr7", "guzzlehttp/psr7" - * and "symfony/http-foundation" packages, all licenced under MIT. - * - * Copyright (c) 2004-2023 Fabien Potencier <fabien@symfony.com> - * Copyright (c) 2015 Michael Dowling <mtdowling@gmail.com> - * Copyright (c) 2015 Márk Sági-Kazár <mark.sagikazar@gmail.com> - * Copyright (c) 2015 Graham Campbell <hello@gjcampbell.co.uk> - * Copyright (c) 2016 Tobias Schultze <webmaster@tubo-world.de> - * Copyright (c) 2016 George Mponos <gmponos@gmail.com> - * Copyright (c) 2016-2018 Tobias Nyholm <tobias.nyholm@gmail.com> - * - * @author Nicolas Grekas <p@tchwork.com> - */ -class Psr17Factory implements RequestFactoryInterface, ResponseFactoryInterface, ServerRequestFactoryInterface, StreamFactoryInterface, UploadedFileFactoryInterface, UriFactoryInterface -{ - private $requestFactory; - private $responseFactory; - private $serverRequestFactory; - private $streamFactory; - private $uploadedFileFactory; - private $uriFactory; - - public function __construct( - RequestFactoryInterface $requestFactory = null, - ResponseFactoryInterface $responseFactory = null, - ServerRequestFactoryInterface $serverRequestFactory = null, - StreamFactoryInterface $streamFactory = null, - UploadedFileFactoryInterface $uploadedFileFactory = null, - UriFactoryInterface $uriFactory = null - ) { - $this->requestFactory = $requestFactory; - $this->responseFactory = $responseFactory; - $this->serverRequestFactory = $serverRequestFactory; - $this->streamFactory = $streamFactory; - $this->uploadedFileFactory = $uploadedFileFactory; - $this->uriFactory = $uriFactory; - - $this->setFactory($requestFactory); - $this->setFactory($responseFactory); - $this->setFactory($serverRequestFactory); - $this->setFactory($streamFactory); - $this->setFactory($uploadedFileFactory); - $this->setFactory($uriFactory); - } - - /** - * @param UriInterface|string $uri - */ - public function createRequest(string $method, $uri): RequestInterface - { - $factory = $this->requestFactory ?? $this->setFactory(Psr17FactoryDiscovery::findRequestFactory()); - - return $factory->createRequest(...\func_get_args()); - } - - public function createResponse(int $code = 200, string $reasonPhrase = ''): ResponseInterface - { - $factory = $this->responseFactory ?? $this->setFactory(Psr17FactoryDiscovery::findResponseFactory()); - - return $factory->createResponse(...\func_get_args()); - } - - /** - * @param UriInterface|string $uri - */ - public function createServerRequest(string $method, $uri, array $serverParams = []): ServerRequestInterface - { - $factory = $this->serverRequestFactory ?? $this->setFactory(Psr17FactoryDiscovery::findServerRequestFactory()); - - return $factory->createServerRequest(...\func_get_args()); - } - - public function createServerRequestFromGlobals(array $server = null, array $get = null, array $post = null, array $cookie = null, array $files = null, StreamInterface $body = null): ServerRequestInterface - { - $server = $server ?? $_SERVER; - $request = $this->createServerRequest($server['REQUEST_METHOD'] ?? 'GET', $this->createUriFromGlobals($server), $server); - - return $this->buildServerRequestFromGlobals($request, $server, $files ?? $_FILES) - ->withQueryParams($get ?? $_GET) - ->withParsedBody($post ?? $_POST) - ->withCookieParams($cookie ?? $_COOKIE) - ->withBody($body ?? $this->createStreamFromFile('php://input', 'r+')); - } - - public function createStream(string $content = ''): StreamInterface - { - $factory = $this->streamFactory ?? $this->setFactory(Psr17FactoryDiscovery::findStreamFactory()); - - return $factory->createStream($content); - } - - public function createStreamFromFile(string $filename, string $mode = 'r'): StreamInterface - { - $factory = $this->streamFactory ?? $this->setFactory(Psr17FactoryDiscovery::findStreamFactory()); - - return $factory->createStreamFromFile($filename, $mode); - } - - /** - * @param resource $resource - */ - public function createStreamFromResource($resource): StreamInterface - { - $factory = $this->streamFactory ?? $this->setFactory(Psr17FactoryDiscovery::findStreamFactory()); - - return $factory->createStreamFromResource($resource); - } - - public function createUploadedFile(StreamInterface $stream, int $size = null, int $error = \UPLOAD_ERR_OK, string $clientFilename = null, string $clientMediaType = null): UploadedFileInterface - { - $factory = $this->uploadedFileFactory ?? $this->setFactory(Psr17FactoryDiscovery::findUploadedFileFactory()); - - return $factory->createUploadedFile(...\func_get_args()); - } - - public function createUri(string $uri = ''): UriInterface - { - $factory = $this->uriFactory ?? $this->setFactory(Psr17FactoryDiscovery::findUriFactory()); - - return $factory->createUri(...\func_get_args()); - } - - public function createUriFromGlobals(array $server = null): UriInterface - { - return $this->buildUriFromGlobals($this->createUri(''), $server ?? $_SERVER); - } - - private function setFactory($factory) - { - if (!$this->requestFactory && $factory instanceof RequestFactoryInterface) { - $this->requestFactory = $factory; - } - if (!$this->responseFactory && $factory instanceof ResponseFactoryInterface) { - $this->responseFactory = $factory; - } - if (!$this->serverRequestFactory && $factory instanceof ServerRequestFactoryInterface) { - $this->serverRequestFactory = $factory; - } - if (!$this->streamFactory && $factory instanceof StreamFactoryInterface) { - $this->streamFactory = $factory; - } - if (!$this->uploadedFileFactory && $factory instanceof UploadedFileFactoryInterface) { - $this->uploadedFileFactory = $factory; - } - if (!$this->uriFactory && $factory instanceof UriFactoryInterface) { - $this->uriFactory = $factory; - } - - return $factory; - } - - private function buildServerRequestFromGlobals(ServerRequestInterface $request, array $server, array $files): ServerRequestInterface - { - $request = $request - ->withProtocolVersion(isset($server['SERVER_PROTOCOL']) ? str_replace('HTTP/', '', $server['SERVER_PROTOCOL']) : '1.1') - ->withUploadedFiles($this->normalizeFiles($files)); - - $headers = []; - foreach ($server as $k => $v) { - if (0 === strpos($k, 'HTTP_')) { - $k = substr($k, 5); - } elseif (!\in_array($k, ['CONTENT_TYPE', 'CONTENT_LENGTH', 'CONTENT_MD5'], true)) { - continue; - } - $k = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', $k)))); - - $headers[$k] = $v; - } - - if (!isset($headers['Authorization'])) { - if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) { - $headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION']; - } elseif (isset($_SERVER['PHP_AUTH_USER'])) { - $headers['Authorization'] = 'Basic '.base64_encode($_SERVER['PHP_AUTH_USER'].':'.($_SERVER['PHP_AUTH_PW'] ?? '')); - } elseif (isset($_SERVER['PHP_AUTH_DIGEST'])) { - $headers['Authorization'] = $_SERVER['PHP_AUTH_DIGEST']; - } - } - - foreach ($headers as $k => $v) { - try { - $request = $request->withHeader($k, $v); - } catch (\InvalidArgumentException $e) { - // ignore invalid headers - } - } - - return $request; - } - - private function buildUriFromGlobals(UriInterface $uri, array $server): UriInterface - { - $uri = $uri->withScheme(!empty($server['HTTPS']) && 'off' !== strtolower($server['HTTPS']) ? 'https' : 'http'); - - $hasPort = false; - if (isset($server['HTTP_HOST'])) { - $parts = parse_url('http://'.$server['HTTP_HOST']); - - $uri = $uri->withHost($parts['host'] ?? 'localhost'); - - if ($parts['port'] ?? false) { - $hasPort = true; - $uri = $uri->withPort($parts['port']); - } - } else { - $uri = $uri->withHost($server['SERVER_NAME'] ?? $server['SERVER_ADDR'] ?? 'localhost'); - } - - if (!$hasPort && isset($server['SERVER_PORT'])) { - $uri = $uri->withPort($server['SERVER_PORT']); - } - - $hasQuery = false; - if (isset($server['REQUEST_URI'])) { - $requestUriParts = explode('?', $server['REQUEST_URI'], 2); - $uri = $uri->withPath($requestUriParts[0]); - if (isset($requestUriParts[1])) { - $hasQuery = true; - $uri = $uri->withQuery($requestUriParts[1]); - } - } - - if (!$hasQuery && isset($server['QUERY_STRING'])) { - $uri = $uri->withQuery($server['QUERY_STRING']); - } - - return $uri; - } - - private function normalizeFiles(array $files): array - { - foreach ($files as $k => $v) { - if ($v instanceof UploadedFileInterface) { - continue; - } - if (!\is_array($v)) { - unset($files[$k]); - } elseif (!isset($v['tmp_name'])) { - $files[$k] = $this->normalizeFiles($v); - } else { - $files[$k] = $this->createUploadedFileFromSpec($v); - } - } - - return $files; - } - - /** - * Create and return an UploadedFile instance from a $_FILES specification. - * - * @param array $value $_FILES struct - * - * @return UploadedFileInterface|UploadedFileInterface[] - */ - private function createUploadedFileFromSpec(array $value) - { - if (!is_array($tmpName = $value['tmp_name'])) { - $file = is_file($tmpName) ? $this->createStreamFromFile($tmpName, 'r') : $this->createStream(); - - return $this->createUploadedFile($file, $value['size'], $value['error'], $value['name'], $value['type']); - } - - foreach ($tmpName as $k => $v) { - $tmpName[$k] = $this->createUploadedFileFromSpec([ - 'tmp_name' => $v, - 'size' => $value['size'][$k] ?? null, - 'error' => $value['error'][$k] ?? null, - 'name' => $value['name'][$k] ?? null, - 'type' => $value['type'][$k] ?? null, - ]); - } - - return $tmpName; - } -} diff --git a/vendor/php-http/discovery/src/Psr17FactoryDiscovery.php b/vendor/php-http/discovery/src/Psr17FactoryDiscovery.php deleted file mode 100644 index a73c6414b..000000000 --- a/vendor/php-http/discovery/src/Psr17FactoryDiscovery.php +++ /dev/null @@ -1,136 +0,0 @@ -<?php - -namespace Http\Discovery; - -use Http\Discovery\Exception\DiscoveryFailedException; -use Psr\Http\Message\RequestFactoryInterface; -use Psr\Http\Message\ResponseFactoryInterface; -use Psr\Http\Message\ServerRequestFactoryInterface; -use Psr\Http\Message\StreamFactoryInterface; -use Psr\Http\Message\UploadedFileFactoryInterface; -use Psr\Http\Message\UriFactoryInterface; - -/** - * Finds PSR-17 factories. - * - * @author Tobias Nyholm <tobias.nyholm@gmail.com> - */ -final class Psr17FactoryDiscovery extends ClassDiscovery -{ - private static function createException($type, Exception $e) - { - return new \Http\Discovery\Exception\NotFoundException( - 'No PSR-17 '.$type.' found. Install a package from this list: https://packagist.org/providers/psr/http-factory-implementation', - 0, - $e - ); - } - - /** - * @return RequestFactoryInterface - * - * @throws Exception\NotFoundException - */ - public static function findRequestFactory() - { - try { - $messageFactory = static::findOneByType(RequestFactoryInterface::class); - } catch (DiscoveryFailedException $e) { - throw self::createException('request factory', $e); - } - - return static::instantiateClass($messageFactory); - } - - /** - * @return ResponseFactoryInterface - * - * @throws Exception\NotFoundException - */ - public static function findResponseFactory() - { - try { - $messageFactory = static::findOneByType(ResponseFactoryInterface::class); - } catch (DiscoveryFailedException $e) { - throw self::createException('response factory', $e); - } - - return static::instantiateClass($messageFactory); - } - - /** - * @return ServerRequestFactoryInterface - * - * @throws Exception\NotFoundException - */ - public static function findServerRequestFactory() - { - try { - $messageFactory = static::findOneByType(ServerRequestFactoryInterface::class); - } catch (DiscoveryFailedException $e) { - throw self::createException('server request factory', $e); - } - - return static::instantiateClass($messageFactory); - } - - /** - * @return StreamFactoryInterface - * - * @throws Exception\NotFoundException - */ - public static function findStreamFactory() - { - try { - $messageFactory = static::findOneByType(StreamFactoryInterface::class); - } catch (DiscoveryFailedException $e) { - throw self::createException('stream factory', $e); - } - - return static::instantiateClass($messageFactory); - } - - /** - * @return UploadedFileFactoryInterface - * - * @throws Exception\NotFoundException - */ - public static function findUploadedFileFactory() - { - try { - $messageFactory = static::findOneByType(UploadedFileFactoryInterface::class); - } catch (DiscoveryFailedException $e) { - throw self::createException('uploaded file factory', $e); - } - - return static::instantiateClass($messageFactory); - } - - /** - * @return UriFactoryInterface - * - * @throws Exception\NotFoundException - */ - public static function findUriFactory() - { - try { - $messageFactory = static::findOneByType(UriFactoryInterface::class); - } catch (DiscoveryFailedException $e) { - throw self::createException('url factory', $e); - } - - return static::instantiateClass($messageFactory); - } - - /** - * @return UriFactoryInterface - * - * @throws Exception\NotFoundException - * - * @deprecated This will be removed in 2.0. Consider using the findUriFactory() method. - */ - public static function findUrlFactory() - { - return static::findUriFactory(); - } -} diff --git a/vendor/php-http/discovery/src/Psr18Client.php b/vendor/php-http/discovery/src/Psr18Client.php deleted file mode 100644 index c47780ec6..000000000 --- a/vendor/php-http/discovery/src/Psr18Client.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php - -namespace Http\Discovery; - -use Psr\Http\Client\ClientInterface; -use Psr\Http\Message\RequestFactoryInterface; -use Psr\Http\Message\RequestInterface; -use Psr\Http\Message\ResponseFactoryInterface; -use Psr\Http\Message\ResponseInterface; -use Psr\Http\Message\ServerRequestFactoryInterface; -use Psr\Http\Message\StreamFactoryInterface; -use Psr\Http\Message\UploadedFileFactoryInterface; -use Psr\Http\Message\UriFactoryInterface; - -/** - * A generic PSR-18 and PSR-17 implementation. - * - * You can create this class with concrete client and factory instances - * or let it use discovery to find suitable implementations as needed. - * - * @author Nicolas Grekas <p@tchwork.com> - */ -class Psr18Client extends Psr17Factory implements ClientInterface -{ - private $client; - - public function __construct( - ClientInterface $client = null, - RequestFactoryInterface $requestFactory = null, - ResponseFactoryInterface $responseFactory = null, - ServerRequestFactoryInterface $serverRequestFactory = null, - StreamFactoryInterface $streamFactory = null, - UploadedFileFactoryInterface $uploadedFileFactory = null, - UriFactoryInterface $uriFactory = null - ) { - parent::__construct($requestFactory, $responseFactory, $serverRequestFactory, $streamFactory, $uploadedFileFactory, $uriFactory); - - $this->client = $client ?? Psr18ClientDiscovery::find(); - } - - public function sendRequest(RequestInterface $request): ResponseInterface - { - return $this->client->sendRequest($request); - } -} diff --git a/vendor/php-http/discovery/src/Psr18ClientDiscovery.php b/vendor/php-http/discovery/src/Psr18ClientDiscovery.php deleted file mode 100644 index dfd2dd1e7..000000000 --- a/vendor/php-http/discovery/src/Psr18ClientDiscovery.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -namespace Http\Discovery; - -use Http\Discovery\Exception\DiscoveryFailedException; -use Psr\Http\Client\ClientInterface; - -/** - * Finds a PSR-18 HTTP Client. - * - * @author Tobias Nyholm <tobias.nyholm@gmail.com> - */ -final class Psr18ClientDiscovery extends ClassDiscovery -{ - /** - * Finds a PSR-18 HTTP Client. - * - * @return ClientInterface - * - * @throws Exception\NotFoundException - */ - public static function find() - { - try { - $client = static::findOneByType(ClientInterface::class); - } catch (DiscoveryFailedException $e) { - throw new \Http\Discovery\Exception\NotFoundException('No PSR-18 clients found. Make sure to install a package providing "psr/http-client-implementation". Example: "php-http/guzzle7-adapter".', 0, $e); - } - - return static::instantiateClass($client); - } -} diff --git a/vendor/php-http/discovery/src/Strategy/CommonClassesStrategy.php b/vendor/php-http/discovery/src/Strategy/CommonClassesStrategy.php deleted file mode 100644 index ae0b0d842..000000000 --- a/vendor/php-http/discovery/src/Strategy/CommonClassesStrategy.php +++ /dev/null @@ -1,180 +0,0 @@ -<?php - -namespace Http\Discovery\Strategy; - -use GuzzleHttp\Client as GuzzleHttp; -use GuzzleHttp\Promise\Promise; -use GuzzleHttp\Psr7\Request as GuzzleRequest; -use Http\Adapter\Artax\Client as Artax; -use Http\Adapter\Buzz\Client as Buzz; -use Http\Adapter\Cake\Client as Cake; -use Http\Adapter\Guzzle5\Client as Guzzle5; -use Http\Adapter\Guzzle6\Client as Guzzle6; -use Http\Adapter\Guzzle7\Client as Guzzle7; -use Http\Adapter\React\Client as React; -use Http\Client\Curl\Client as Curl; -use Http\Client\HttpAsyncClient; -use Http\Client\HttpClient; -use Http\Client\Socket\Client as Socket; -use Http\Discovery\ClassDiscovery; -use Http\Discovery\Exception\NotFoundException; -use Http\Discovery\Psr17FactoryDiscovery; -use Http\Message\MessageFactory; -use Http\Message\MessageFactory\DiactorosMessageFactory; -use Http\Message\MessageFactory\GuzzleMessageFactory; -use Http\Message\MessageFactory\SlimMessageFactory; -use Http\Message\StreamFactory; -use Http\Message\StreamFactory\DiactorosStreamFactory; -use Http\Message\StreamFactory\GuzzleStreamFactory; -use Http\Message\StreamFactory\SlimStreamFactory; -use Http\Message\UriFactory; -use Http\Message\UriFactory\DiactorosUriFactory; -use Http\Message\UriFactory\GuzzleUriFactory; -use Http\Message\UriFactory\SlimUriFactory; -use Laminas\Diactoros\Request as DiactorosRequest; -use Nyholm\Psr7\Factory\HttplugFactory as NyholmHttplugFactory; -use Psr\Http\Client\ClientInterface as Psr18Client; -use Psr\Http\Message\RequestFactoryInterface as Psr17RequestFactory; -use Slim\Http\Request as SlimRequest; -use Symfony\Component\HttpClient\HttplugClient as SymfonyHttplug; -use Symfony\Component\HttpClient\Psr18Client as SymfonyPsr18; - -/** - * @internal - * - * @author Tobias Nyholm <tobias.nyholm@gmail.com> - * - * Don't miss updating src/Composer/Plugin.php when adding a new supported class. - */ -final class CommonClassesStrategy implements DiscoveryStrategy -{ - /** - * @var array - */ - private static $classes = [ - MessageFactory::class => [ - ['class' => NyholmHttplugFactory::class, 'condition' => [NyholmHttplugFactory::class]], - ['class' => GuzzleMessageFactory::class, 'condition' => [GuzzleRequest::class, GuzzleMessageFactory::class]], - ['class' => DiactorosMessageFactory::class, 'condition' => [DiactorosRequest::class, DiactorosMessageFactory::class]], - ['class' => SlimMessageFactory::class, 'condition' => [SlimRequest::class, SlimMessageFactory::class]], - ], - StreamFactory::class => [ - ['class' => NyholmHttplugFactory::class, 'condition' => [NyholmHttplugFactory::class]], - ['class' => GuzzleStreamFactory::class, 'condition' => [GuzzleRequest::class, GuzzleStreamFactory::class]], - ['class' => DiactorosStreamFactory::class, 'condition' => [DiactorosRequest::class, DiactorosStreamFactory::class]], - ['class' => SlimStreamFactory::class, 'condition' => [SlimRequest::class, SlimStreamFactory::class]], - ], - UriFactory::class => [ - ['class' => NyholmHttplugFactory::class, 'condition' => [NyholmHttplugFactory::class]], - ['class' => GuzzleUriFactory::class, 'condition' => [GuzzleRequest::class, GuzzleUriFactory::class]], - ['class' => DiactorosUriFactory::class, 'condition' => [DiactorosRequest::class, DiactorosUriFactory::class]], - ['class' => SlimUriFactory::class, 'condition' => [SlimRequest::class, SlimUriFactory::class]], - ], - HttpAsyncClient::class => [ - ['class' => SymfonyHttplug::class, 'condition' => [SymfonyHttplug::class, Promise::class, [self::class, 'isPsr17FactoryInstalled']]], - ['class' => Guzzle7::class, 'condition' => Guzzle7::class], - ['class' => Guzzle6::class, 'condition' => Guzzle6::class], - ['class' => Curl::class, 'condition' => Curl::class], - ['class' => React::class, 'condition' => React::class], - ], - HttpClient::class => [ - ['class' => SymfonyHttplug::class, 'condition' => [SymfonyHttplug::class, [self::class, 'isPsr17FactoryInstalled']]], - ['class' => Guzzle7::class, 'condition' => Guzzle7::class], - ['class' => Guzzle6::class, 'condition' => Guzzle6::class], - ['class' => Guzzle5::class, 'condition' => Guzzle5::class], - ['class' => Curl::class, 'condition' => Curl::class], - ['class' => Socket::class, 'condition' => Socket::class], - ['class' => Buzz::class, 'condition' => Buzz::class], - ['class' => React::class, 'condition' => React::class], - ['class' => Cake::class, 'condition' => Cake::class], - ['class' => Artax::class, 'condition' => Artax::class], - [ - 'class' => [self::class, 'buzzInstantiate'], - 'condition' => [\Buzz\Client\FileGetContents::class, \Buzz\Message\ResponseBuilder::class], - ], - ], - Psr18Client::class => [ - [ - 'class' => [self::class, 'symfonyPsr18Instantiate'], - 'condition' => [SymfonyPsr18::class, Psr17RequestFactory::class], - ], - [ - 'class' => GuzzleHttp::class, - 'condition' => [self::class, 'isGuzzleImplementingPsr18'], - ], - [ - 'class' => [self::class, 'buzzInstantiate'], - 'condition' => [\Buzz\Client\FileGetContents::class, \Buzz\Message\ResponseBuilder::class], - ], - ], - ]; - - public static function getCandidates($type) - { - if (Psr18Client::class === $type) { - return self::getPsr18Candidates(); - } - - return self::$classes[$type] ?? []; - } - - /** - * @return array The return value is always an array with zero or more elements. Each - * element is an array with two keys ['class' => string, 'condition' => mixed]. - */ - private static function getPsr18Candidates() - { - $candidates = self::$classes[Psr18Client::class]; - - // HTTPlug 2.0 clients implements PSR18Client too. - foreach (self::$classes[HttpClient::class] as $c) { - if (!is_string($c['class'])) { - continue; - } - try { - if (ClassDiscovery::safeClassExists($c['class']) && is_subclass_of($c['class'], Psr18Client::class)) { - $candidates[] = $c; - } - } catch (\Throwable $e) { - trigger_error(sprintf('Got exception "%s (%s)" while checking if a PSR-18 Client is available', get_class($e), $e->getMessage()), E_USER_WARNING); - } - } - - return $candidates; - } - - public static function buzzInstantiate() - { - return new \Buzz\Client\FileGetContents(Psr17FactoryDiscovery::findResponseFactory()); - } - - public static function symfonyPsr18Instantiate() - { - return new SymfonyPsr18(null, Psr17FactoryDiscovery::findResponseFactory(), Psr17FactoryDiscovery::findStreamFactory()); - } - - public static function isGuzzleImplementingPsr18() - { - return defined('GuzzleHttp\ClientInterface::MAJOR_VERSION'); - } - - /** - * Can be used as a condition. - * - * @return bool - */ - public static function isPsr17FactoryInstalled() - { - try { - Psr17FactoryDiscovery::findResponseFactory(); - } catch (NotFoundException $e) { - return false; - } catch (\Throwable $e) { - trigger_error(sprintf('Got exception "%s (%s)" while checking if a PSR-17 ResponseFactory is available', get_class($e), $e->getMessage()), E_USER_WARNING); - - return false; - } - - return true; - } -} diff --git a/vendor/php-http/discovery/src/Strategy/CommonPsr17ClassesStrategy.php b/vendor/php-http/discovery/src/Strategy/CommonPsr17ClassesStrategy.php deleted file mode 100644 index 04cf4baf8..000000000 --- a/vendor/php-http/discovery/src/Strategy/CommonPsr17ClassesStrategy.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php - -namespace Http\Discovery\Strategy; - -use Psr\Http\Message\RequestFactoryInterface; -use Psr\Http\Message\ResponseFactoryInterface; -use Psr\Http\Message\ServerRequestFactoryInterface; -use Psr\Http\Message\StreamFactoryInterface; -use Psr\Http\Message\UploadedFileFactoryInterface; -use Psr\Http\Message\UriFactoryInterface; - -/** - * @internal - * - * @author Tobias Nyholm <tobias.nyholm@gmail.com> - * - * Don't miss updating src/Composer/Plugin.php when adding a new supported class. - */ -final class CommonPsr17ClassesStrategy implements DiscoveryStrategy -{ - /** - * @var array - */ - private static $classes = [ - RequestFactoryInterface::class => [ - 'Phalcon\Http\Message\RequestFactory', - 'Nyholm\Psr7\Factory\Psr17Factory', - 'GuzzleHttp\Psr7\HttpFactory', - 'Http\Factory\Diactoros\RequestFactory', - 'Http\Factory\Guzzle\RequestFactory', - 'Http\Factory\Slim\RequestFactory', - 'Laminas\Diactoros\RequestFactory', - 'Slim\Psr7\Factory\RequestFactory', - 'HttpSoft\Message\RequestFactory', - ], - ResponseFactoryInterface::class => [ - 'Phalcon\Http\Message\ResponseFactory', - 'Nyholm\Psr7\Factory\Psr17Factory', - 'GuzzleHttp\Psr7\HttpFactory', - 'Http\Factory\Diactoros\ResponseFactory', - 'Http\Factory\Guzzle\ResponseFactory', - 'Http\Factory\Slim\ResponseFactory', - 'Laminas\Diactoros\ResponseFactory', - 'Slim\Psr7\Factory\ResponseFactory', - 'HttpSoft\Message\ResponseFactory', - ], - ServerRequestFactoryInterface::class => [ - 'Phalcon\Http\Message\ServerRequestFactory', - 'Nyholm\Psr7\Factory\Psr17Factory', - 'GuzzleHttp\Psr7\HttpFactory', - 'Http\Factory\Diactoros\ServerRequestFactory', - 'Http\Factory\Guzzle\ServerRequestFactory', - 'Http\Factory\Slim\ServerRequestFactory', - 'Laminas\Diactoros\ServerRequestFactory', - 'Slim\Psr7\Factory\ServerRequestFactory', - 'HttpSoft\Message\ServerRequestFactory', - ], - StreamFactoryInterface::class => [ - 'Phalcon\Http\Message\StreamFactory', - 'Nyholm\Psr7\Factory\Psr17Factory', - 'GuzzleHttp\Psr7\HttpFactory', - 'Http\Factory\Diactoros\StreamFactory', - 'Http\Factory\Guzzle\StreamFactory', - 'Http\Factory\Slim\StreamFactory', - 'Laminas\Diactoros\StreamFactory', - 'Slim\Psr7\Factory\StreamFactory', - 'HttpSoft\Message\StreamFactory', - ], - UploadedFileFactoryInterface::class => [ - 'Phalcon\Http\Message\UploadedFileFactory', - 'Nyholm\Psr7\Factory\Psr17Factory', - 'GuzzleHttp\Psr7\HttpFactory', - 'Http\Factory\Diactoros\UploadedFileFactory', - 'Http\Factory\Guzzle\UploadedFileFactory', - 'Http\Factory\Slim\UploadedFileFactory', - 'Laminas\Diactoros\UploadedFileFactory', - 'Slim\Psr7\Factory\UploadedFileFactory', - 'HttpSoft\Message\UploadedFileFactory', - ], - UriFactoryInterface::class => [ - 'Phalcon\Http\Message\UriFactory', - 'Nyholm\Psr7\Factory\Psr17Factory', - 'GuzzleHttp\Psr7\HttpFactory', - 'Http\Factory\Diactoros\UriFactory', - 'Http\Factory\Guzzle\UriFactory', - 'Http\Factory\Slim\UriFactory', - 'Laminas\Diactoros\UriFactory', - 'Slim\Psr7\Factory\UriFactory', - 'HttpSoft\Message\UriFactory', - ], - ]; - - public static function getCandidates($type) - { - $candidates = []; - if (isset(self::$classes[$type])) { - foreach (self::$classes[$type] as $class) { - $candidates[] = ['class' => $class, 'condition' => [$class]]; - } - } - - return $candidates; - } -} diff --git a/vendor/php-http/discovery/src/Strategy/DiscoveryStrategy.php b/vendor/php-http/discovery/src/Strategy/DiscoveryStrategy.php deleted file mode 100644 index 1eadb145b..000000000 --- a/vendor/php-http/discovery/src/Strategy/DiscoveryStrategy.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -namespace Http\Discovery\Strategy; - -use Http\Discovery\Exception\StrategyUnavailableException; - -/** - * @author Tobias Nyholm <tobias.nyholm@gmail.com> - */ -interface DiscoveryStrategy -{ - /** - * Find a resource of a specific type. - * - * @param string $type - * - * @return array The return value is always an array with zero or more elements. Each - * element is an array with two keys ['class' => string, 'condition' => mixed]. - * - * @throws StrategyUnavailableException if we cannot use this strategy - */ - public static function getCandidates($type); -} diff --git a/vendor/php-http/discovery/src/Strategy/MockClientStrategy.php b/vendor/php-http/discovery/src/Strategy/MockClientStrategy.php deleted file mode 100644 index 77b9d276f..000000000 --- a/vendor/php-http/discovery/src/Strategy/MockClientStrategy.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -namespace Http\Discovery\Strategy; - -use Http\Client\HttpAsyncClient; -use Http\Client\HttpClient; -use Http\Mock\Client as Mock; - -/** - * Find the Mock client. - * - * @author Sam Rapaport <me@samrapdev.com> - */ -final class MockClientStrategy implements DiscoveryStrategy -{ - public static function getCandidates($type) - { - if (is_a(HttpClient::class, $type, true) || is_a(HttpAsyncClient::class, $type, true)) { - return [['class' => Mock::class, 'condition' => Mock::class]]; - } - - return []; - } -} diff --git a/vendor/php-http/discovery/src/Strategy/PuliBetaStrategy.php b/vendor/php-http/discovery/src/Strategy/PuliBetaStrategy.php deleted file mode 100644 index 74b78b83f..000000000 --- a/vendor/php-http/discovery/src/Strategy/PuliBetaStrategy.php +++ /dev/null @@ -1,90 +0,0 @@ -<?php - -namespace Http\Discovery\Strategy; - -use Http\Discovery\ClassDiscovery; -use Http\Discovery\Exception\PuliUnavailableException; -use Puli\Discovery\Api\Discovery; -use Puli\GeneratedPuliFactory; - -/** - * Find candidates using Puli. - * - * @internal - * - * @final - * - * @author David de Boer <david@ddeboer.nl> - * @author Márk Sági-Kazár <mark.sagikazar@gmail.com> - */ -class PuliBetaStrategy implements DiscoveryStrategy -{ - /** - * @var GeneratedPuliFactory - */ - protected static $puliFactory; - - /** - * @var Discovery - */ - protected static $puliDiscovery; - - /** - * @return GeneratedPuliFactory - * - * @throws PuliUnavailableException - */ - private static function getPuliFactory() - { - if (null === self::$puliFactory) { - if (!defined('PULI_FACTORY_CLASS')) { - throw new PuliUnavailableException('Puli Factory is not available'); - } - - $puliFactoryClass = PULI_FACTORY_CLASS; - - if (!ClassDiscovery::safeClassExists($puliFactoryClass)) { - throw new PuliUnavailableException('Puli Factory class does not exist'); - } - - self::$puliFactory = new $puliFactoryClass(); - } - - return self::$puliFactory; - } - - /** - * Returns the Puli discovery layer. - * - * @return Discovery - * - * @throws PuliUnavailableException - */ - private static function getPuliDiscovery() - { - if (!isset(self::$puliDiscovery)) { - $factory = self::getPuliFactory(); - $repository = $factory->createRepository(); - - self::$puliDiscovery = $factory->createDiscovery($repository); - } - - return self::$puliDiscovery; - } - - public static function getCandidates($type) - { - $returnData = []; - $bindings = self::getPuliDiscovery()->findBindings($type); - - foreach ($bindings as $binding) { - $condition = true; - if ($binding->hasParameterValue('depends')) { - $condition = $binding->getParameterValue('depends'); - } - $returnData[] = ['class' => $binding->getClassName(), 'condition' => $condition]; - } - - return $returnData; - } -} diff --git a/vendor/php-http/discovery/src/StreamFactoryDiscovery.php b/vendor/php-http/discovery/src/StreamFactoryDiscovery.php deleted file mode 100644 index e11c49ae2..000000000 --- a/vendor/php-http/discovery/src/StreamFactoryDiscovery.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -namespace Http\Discovery; - -use Http\Discovery\Exception\DiscoveryFailedException; -use Http\Message\StreamFactory; - -/** - * Finds a Stream Factory. - * - * @author Михаил Красильников <m.krasilnikov@yandex.ru> - * - * @deprecated This will be removed in 2.0. Consider using Psr17FactoryDiscovery. - */ -final class StreamFactoryDiscovery extends ClassDiscovery -{ - /** - * Finds a Stream Factory. - * - * @return StreamFactory - * - * @throws Exception\NotFoundException - */ - public static function find() - { - try { - $streamFactory = static::findOneByType(StreamFactory::class); - } catch (DiscoveryFailedException $e) { - throw new NotFoundException('No stream factories found. To use Guzzle, Diactoros or Slim Framework factories install php-http/message and the chosen message implementation.', 0, $e); - } - - return static::instantiateClass($streamFactory); - } -} diff --git a/vendor/php-http/discovery/src/UriFactoryDiscovery.php b/vendor/php-http/discovery/src/UriFactoryDiscovery.php deleted file mode 100644 index db3add206..000000000 --- a/vendor/php-http/discovery/src/UriFactoryDiscovery.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -namespace Http\Discovery; - -use Http\Discovery\Exception\DiscoveryFailedException; -use Http\Message\UriFactory; - -/** - * Finds a URI Factory. - * - * @author David de Boer <david@ddeboer.nl> - * - * @deprecated This will be removed in 2.0. Consider using Psr17FactoryDiscovery. - */ -final class UriFactoryDiscovery extends ClassDiscovery -{ - /** - * Finds a URI Factory. - * - * @return UriFactory - * - * @throws Exception\NotFoundException - */ - public static function find() - { - try { - $uriFactory = static::findOneByType(UriFactory::class); - } catch (DiscoveryFailedException $e) { - throw new NotFoundException('No uri factories found. To use Guzzle, Diactoros or Slim Framework factories install php-http/message and the chosen message implementation.', 0, $e); - } - - return static::instantiateClass($uriFactory); - } -} |