/** * Set request access_token query. */ protected function attachAccessToken() { if (!$this->accessToken) { return; } // log $this->getHttp()->addMiddleware(function (callable $handler) { return function (RequestInterface $request, array $options) use($handler) { $field = $this->accessToken->getQueryName(); $token = $this->accessToken->getToken(); $request = $request->withUri(Uri::withQueryValue($request->getUri(), $field, $token)); Log::debug("Request Token: {$token}"); Log::debug('Request Uri: ' . $request->getUri()); return $handler($request, $options); }; }); // retry $this->getHttp()->addMiddleware(Middleware::retry(function ($retries, RequestInterface $request, ResponseInterface $response = null, RequestException $exception = null) { // Limit the number of retries to 2 if ($retries <= 2 && $response && ($body = $response->getBody())) { // Retry on server errors if (stripos($body, 'errcode') && (stripos($body, '40001') || stripos($body, '42001'))) { return true; } } return false; })); }
/** * Return retry middleware. * * @return \GuzzleHttp\RetryMiddleware */ protected function retryMiddleware() { return Middleware::retry(function ($retries, RequestInterface $request, ResponseInterface $response = null, RequestException $exception = null) { // Limit the number of retries to 2 if ($retries <= 2 && $response && ($body = $response->getBody())) { // Retry on server errors if (stripos($body, 'errcode') && (stripos($body, '40001') || stripos($body, '42001'))) { $field = $this->accessToken->getQueryName(); $token = $this->accessToken->getToken(); $request = $request->withUri($newUri = Uri::withQueryValue($request->getUri(), $field, $token)); Log::debug("Retry with Request Token: {$token}"); Log::debug("Retry with Request Uri: {$newUri}"); return true; } } return false; }); }