Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit ad31360

Browse filesBrowse files
minor #64068 [FrameworkBundle][Translation] Set Loco HTTP client max host connections to 10 (MatTheCat)
This PR was squashed before being merged into the 8.1 branch. Discussion ---------- [FrameworkBundle][Translation] Set Loco HTTP client max host connections to 10 | Q | A | ------------- | --- | Branch? | 8.1 | Bug fix? | no | New feature? | no | Deprecations? | no | Issues | Fix part of #62289 | License | MIT From the maker of Loco: > The Loco API […] does restrict parallel HTTP requests to a buffer of 10 pending requests per API key. Commits ------- a34fb76 [FrameworkBundle][Translation] Set Loco HTTP client max host connections to 10
2 parents fb17f3a + a34fb76 commit ad31360
Copy full SHA for ad31360

3 files changed

+27-10Lines changed: 27 additions & 10 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php‎

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+9-7Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1673,18 +1673,20 @@ private function registerTranslatorConfiguration(array $config, ContainerBuilder
16731673
}
16741674

16751675
$classToServices = [
1676-
TranslationBridge\Crowdin\CrowdinProviderFactory::class => 'translation.provider_factory.crowdin',
1677-
TranslationBridge\Loco\LocoProviderFactory::class => 'translation.provider_factory.loco',
1678-
TranslationBridge\Lokalise\LokaliseProviderFactory::class => 'translation.provider_factory.lokalise',
1679-
TranslationBridge\Phrase\PhraseProviderFactory::class => 'translation.provider_factory.phrase',
1676+
TranslationBridge\Crowdin\CrowdinProviderFactory::class => ['symfony/crowdin-translation-provider', ['translation.provider_factory.crowdin']],
1677+
TranslationBridge\Loco\LocoProviderFactory::class => ['symfony/loco-translation-provider', ['translation.provider_factory.loco', 'translation.provider_factory.loco.http_client']],
1678+
TranslationBridge\Lokalise\LokaliseProviderFactory::class => ['symfony/lokalise-translation-provider', ['translation.provider_factory.lokalise']],
1679+
TranslationBridge\Phrase\PhraseProviderFactory::class => ['symfony/phrase-translation-provider', ['translation.provider_factory.phrase']],
16801680
];
16811681

16821682
$parentPackages = ['symfony/framework-bundle', 'symfony/translation', 'symfony/http-client'];
16831683

1684-
foreach ($classToServices as $class => $service) {
1685-
$package = substr($service, \strlen('translation.provider_factory.'));
1684+
foreach ($classToServices as $class => [$package, $services]) {
1685+
if ($container->hasDefinition('http_client') && ContainerBuilder::willBeAvailable($package, $class, $parentPackages)) {
1686+
continue;
1687+
}
16861688

1687-
if (!$container->hasDefinition('http_client') || !ContainerBuilder::willBeAvailable(\sprintf('symfony/%s-translation-provider', $package), $class, $parentPackages)) {
1689+
foreach ($services as $service) {
16881690
$container->removeDefinition($service);
16891691
}
16901692
}
Collapse file

‎src/Symfony/Bundle/FrameworkBundle/Resources/config/translation_providers.php‎

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Resources/config/translation_providers.php
+13-1Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@
1111

1212
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
1313

14+
use Symfony\Component\HttpClient\HttpClient;
1415
use Symfony\Component\Translation\Bridge\Crowdin\CrowdinProviderFactory;
1516
use Symfony\Component\Translation\Bridge\Loco\LocoProviderFactory;
1617
use Symfony\Component\Translation\Bridge\Lokalise\LokaliseProviderFactory;
1718
use Symfony\Component\Translation\Bridge\Phrase\PhraseProviderFactory;
1819
use Symfony\Component\Translation\Provider\NullProviderFactory;
1920
use Symfony\Component\Translation\Provider\TranslationProviderCollection;
2021
use Symfony\Component\Translation\Provider\TranslationProviderCollectionFactory;
22+
use Symfony\Contracts\HttpClient\HttpClientInterface;
2123

2224
return static function (ContainerConfigurator $container) {
2325
$container->services()
@@ -46,9 +48,19 @@
4648
])
4749
->tag('translation.provider_factory')
4850

51+
->set('translation.provider_factory.loco.http_client', HttpClientInterface::class)
52+
->factory([HttpClient::class, 'create'])
53+
->args([
54+
[], // default options
55+
10, // max host connections
56+
])
57+
->call('setLogger', [service('logger')])
58+
->tag('http_client.client')
59+
->tag('monolog.logger', ['channel' => 'http_client'])
60+
4961
->set('translation.provider_factory.loco', LocoProviderFactory::class)
5062
->args([
51-
service('http_client'),
63+
service('translation.provider_factory.loco.http_client'),
5264
service('logger'),
5365
param('kernel.default_locale'),
5466
service('translation.loader.xliff'),
Collapse file

‎src/Symfony/Component/Translation/Bridge/Loco/LocoProviderFactory.php‎

Copy file name to clipboardExpand all lines: src/Symfony/Component/Translation/Bridge/Loco/LocoProviderFactory.php
+5-2Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
namespace Symfony\Component\Translation\Bridge\Loco;
1313

1414
use Psr\Log\LoggerInterface;
15+
use Symfony\Component\HttpClient\Retry\GenericRetryStrategy;
16+
use Symfony\Component\HttpClient\RetryableHttpClient;
17+
use Symfony\Component\HttpClient\ScopingHttpClient;
1518
use Symfony\Component\Translation\Exception\UnsupportedSchemeException;
1619
use Symfony\Component\Translation\Loader\LoaderInterface;
1720
use Symfony\Component\Translation\Provider\AbstractProviderFactory;
@@ -45,8 +48,8 @@ public function create(Dsn $dsn): LocoProvider
4548
$endpoint .= $dsn->getPort() ? ':'.$dsn->getPort() : '';
4649
$restrictToStatus = $dsn->getOption('status');
4750

48-
$client = $this->client->withOptions([
49-
'base_uri' => 'https://'.$endpoint.'/api/',
51+
$client = new RetryableHttpClient($this->client, new GenericRetryStrategy(), 3, $this->logger);
52+
$client = ScopingHttpClient::forBaseUri($client, 'https://'.$endpoint.'/api/', [
5053
'headers' => [
5154
'Authorization' => 'Loco '.$this->getUser($dsn),
5255
],

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.