truncateExceptionsAt = $truncateExceptionsAt; $this->response = $response; parent::__construct($this->prepareMessage($response), $response->status()); } /** * Enable truncation of request exception messages. * * @return void */ public static function truncate() { static::$truncateAt = 120; } /** * Set the truncation length for request exception messages. * * @param int $length * @return void */ public static function truncateAt(int $length) { static::$truncateAt = $length; } /** * Disable truncation of request exception messages. * * @return void */ public static function dontTruncate() { static::$truncateAt = false; } /** * Prepare the exception message. * * @return bool */ public function report() { if (! $this->hasBeenSummarized) { $this->message = $this->prepareMessage($this->response); $this->hasBeenSummarized = true; } return false; } /** * Prepare the exception message. * * @param \Illuminate\Http\Client\Response $response * @return string */ protected function prepareMessage(Response $response) { $message = "HTTP request returned status code {$response->status()}"; $truncateExceptionsAt = $this->truncateExceptionsAt ?? static::$truncateAt; $psrResponse = $response->toPsrResponse(); $summary = null; if (is_int($truncateExceptionsAt)) { $summary = Message::bodySummary($psrResponse, $truncateExceptionsAt); } elseif (($body = $psrResponse->getBody())->isSeekable() && $body->isReadable()) { $summary = Message::toString($psrResponse); } return is_null($summary) ? $message : $message.":\n{$summary}\n"; } }