<?php

namespace Modular\ConnectorDependencies\Illuminate\Http\Client;

class RequestException extends HttpClientException
{
    /**
     * The response instance.
     *
     * @var \Illuminate\Http\Client\Response
     */
    public $response;
    /**
     * Create a new exception instance.
     *
     * @param  \Illuminate\Http\Client\Response  $response
     * @return void
     */
    public function __construct(Response $response)
    {
        parent::__construct($this->prepareMessage($response), $response->status());
        $this->response = $response;
    }
    /**
     * 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()}";
        $summary = class_exists(\Modular\ConnectorDependencies\GuzzleHttp\Psr7\Message::class) ? \Modular\ConnectorDependencies\GuzzleHttp\Psr7\Message::bodySummary($response->toPsrResponse()) : \Modular\ConnectorDependencies\GuzzleHttp\Psr7\get_message_body_summary($response->toPsrResponse());
        return is_null($summary) ? $message : $message .= ":\n{$summary}\n";
    }
}
