[FrameworkBundle] fix HttpClient integration

This commit is contained in:
Nicolas Grekas 2019-04-03 12:06:15 +02:00
parent bce6124f8f
commit 3e7a47c0bf
2 changed files with 12 additions and 8 deletions

View File

@ -43,8 +43,6 @@ use Symfony\Component\WebLink\HttpHeaderSerializer;
*/
class Configuration implements ConfigurationInterface
{
use HttpClientTrait;
private $debug;
/**
@ -1332,10 +1330,21 @@ class Configuration implements ConfigurationInterface
->beforeNormalization()
->always()
->then(function ($config) {
if (!trait_exists(HttpClientTrait::class)) {
throw new LogicException('HttpClient support cannot be enabled as the component is not installed. Try running "composer require symfony/http-client".');
}
$config = \is_array($config) ? $config : ['base_uri' => $config];
if (!isset($config['scope']) && isset($config['base_uri'])) {
$config['scope'] = preg_quote(implode('', self::resolveUrl(self::parseUrl('.'), self::parseUrl($config['base_uri']))));
$urlResolver = new class() {
use HttpClientTrait {
resolveUrl as public;
parseUrl as public;
}
};
$config['scope'] = preg_quote(implode('', $urlResolver->resolveUrl($urlResolver->parseUrl('.'), $urlResolver->parseUrl($config['base_uri']))));
}
return $config;

View File

@ -60,7 +60,6 @@ use Symfony\Component\Form\ChoiceList\Factory\CachingFactoryDecorator;
use Symfony\Component\Form\FormTypeExtensionInterface;
use Symfony\Component\Form\FormTypeGuesserInterface;
use Symfony\Component\Form\FormTypeInterface;
use Symfony\Component\HttpClient\HttpClient;
use Symfony\Component\HttpClient\Psr18Client;
use Symfony\Component\HttpClient\ScopingHttpClient;
use Symfony\Component\HttpKernel\CacheClearer\CacheClearerInterface;
@ -1796,10 +1795,6 @@ class FrameworkExtension extends Extension
private function registerHttpClientConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
{
if (!class_exists(HttpClient::class)) {
throw new LogicException('HttpClient support cannot be enabled as the component is not installed. Try running "composer require symfony/http-client".');
}
$loader->load('http_client.xml');
$container->getDefinition('http_client')->setArguments([$config['default_options'] ?? [], $config['max_host_connections'] ?? 6]);