serverRetry = ClientFilter::retry($times); $this->serverRetryStrings = $strings; $this->serverRetryStatusCodes = $statusCodes; return $this; } /** * @param int $times * @param array $strings * @param array $codes * * @return $this * @throws ClientException */ public function retryByClient($times, array $strings, array $codes = []) { $this->clientRetry = ClientFilter::retry($times); $this->clientRetryStrings = $strings; $this->clientRetryStatusCodes = $codes; return $this; } /** * @param Result $result * * @return bool */ private function shouldServerRetry(Result $result) { if ($this->serverRetry <= 0) { return false; } if (in_array($result->getStatusCode(), $this->serverRetryStatusCodes)) { $this->serverRetry--; return true; } foreach ($this->serverRetryStrings as $message) { if (Stringy::contains($result->getBody(), $message)) { $this->serverRetry--; return true; } } return false; } /** * @param Exception $exception * * @return bool */ private function shouldClientRetry(Exception $exception) { if ($this->clientRetry <= 0) { return false; } if (in_array($exception->getCode(), $this->clientRetryStatusCodes, true)) { $this->clientRetry--; return true; } foreach ($this->clientRetryStrings as $message) { if (Stringy::contains($exception->getMessage(), $message)) { $this->clientRetry--; return true; } } return false; } }