From 9ec790d8814023adb8fe3dcdaa1532f9c1eb27e5 Mon Sep 17 00:00:00 2001 From: Hugo Alliaume Date: Fri, 4 Nov 2022 11:57:50 +0100 Subject: [PATCH] [Translation][Crowdin] Use synchronous HTTP requests when reading the Crowdin API --- .../Bridge/Crowdin/CrowdinProvider.php | 46 ++++++++----------- 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/src/Symfony/Component/Translation/Bridge/Crowdin/CrowdinProvider.php b/src/Symfony/Component/Translation/Bridge/Crowdin/CrowdinProvider.php index bf6e55fd10730..d175d9ffaaaf5 100644 --- a/src/Symfony/Component/Translation/Bridge/Crowdin/CrowdinProvider.php +++ b/src/Symfony/Component/Translation/Bridge/Crowdin/CrowdinProvider.php @@ -110,7 +110,6 @@ public function read(array $domains, array $locales): TranslatorBag $fileList = $this->getFileList(); $translatorBag = new TranslatorBag(); - $responses = []; foreach ($domains as $domain) { $fileId = $this->getFileIdByDomain($fileList, $domain); @@ -126,45 +125,36 @@ public function read(array $domains, array $locales): TranslatorBag $response = $this->downloadSourceFile($fileId); } - $responses[] = [$response, $locale, $domain]; - } - } + if (204 === $response->getStatusCode()) { + $this->logger->error(sprintf('No content in exported file: "%s".', $response->getContent(false))); - /* @var ResponseInterface $response */ - $downloads = []; - foreach ($responses as [$response, $locale, $domain]) { - if (204 === $response->getStatusCode()) { - $this->logger->error(sprintf('No content in exported file: "%s".', $response->getContent(false))); + continue; + } - continue; - } + if (200 !== $statusCode = $response->getStatusCode()) { + $this->logger->error(sprintf('Unable to export file: "%s".', $response->getContent(false))); - if (200 !== $statusCode = $response->getStatusCode()) { - $this->logger->error(sprintf('Unable to export file: "%s".', $response->getContent(false))); + if (500 <= $statusCode) { + throw new ProviderException('Unable to export file.', $response); + } - if (500 <= $statusCode) { - throw new ProviderException('Unable to export file.', $response); + continue; } - continue; - } + $response = $this->client->request('GET', $response->toArray()['data']['url']); - $response = $this->client->request('GET', $response->toArray()['data']['url']); - $downloads[] = [$response, $locale, $domain]; - } + if (200 !== $statusCode = $response->getStatusCode()) { + $this->logger->error(sprintf('Unable to download file content: "%s".', $response->getContent(false))); - foreach ($downloads as [$response, $locale, $domain]) { - if (200 !== $statusCode = $response->getStatusCode()) { - $this->logger->error(sprintf('Unable to download file content: "%s".', $response->getContent(false))); + if (500 <= $statusCode) { + throw new ProviderException('Unable to download file content.', $response); + } - if (500 <= $statusCode) { - throw new ProviderException('Unable to download file content.', $response); + continue; } - continue; + $translatorBag->addCatalogue($this->loader->load($response->getContent(), $locale, $domain)); } - - $translatorBag->addCatalogue($this->loader->load($response->getContent(), $locale, $domain)); } return $translatorBag;