diff --git a/src/Bundle/ChillFranceTravailApiBundle/src/ApiHelper/PartenaireRomeAppellation.php b/src/Bundle/ChillFranceTravailApiBundle/src/ApiHelper/PartenaireRomeAppellation.php index a548894c9..605bbf668 100644 --- a/src/Bundle/ChillFranceTravailApiBundle/src/ApiHelper/PartenaireRomeAppellation.php +++ b/src/Bundle/ChillFranceTravailApiBundle/src/ApiHelper/PartenaireRomeAppellation.php @@ -87,20 +87,27 @@ class PartenaireRomeAppellation { $bearer = $this->getBearer(); - try { - $response = $this->httpClient->request('GET', sprintf(self::BASE.'appellation/%s', $code), [ - 'headers' => [ - 'Authorization' => 'Bearer '.$bearer, - 'Accept' => 'application/json', - ], - 'query' => [ - 'champs' => 'code,libelle,metier(code,libelle)', - ], - ]); + while (true) { + try { + $response = $this->httpClient->request('GET', sprintf(self::BASE.'appellation/%s', $code), [ + 'headers' => [ + 'Authorization' => 'Bearer ' . $bearer, + 'Accept' => 'application/json', + ], + 'query' => [ + 'champs' => 'code,libelle,metier(code,libelle)', + ], + ]); - return $response->toArray(); - } catch (HttpExceptionInterface $exception) { - throw $exception; + return $response->toArray(); + } catch (HttpExceptionInterface $exception) { + if ($exception->getResponse()->getStatusCode() === 429) { + $retryAfter = $exception->getResponse()->getHeaders(false)['retry-after'][0] ?? 1; + sleep((int)$retryAfter); + } else { + throw $exception; + } + } } } }