diff options
Diffstat (limited to 'vendor/guzzlehttp/guzzle/src/Exception')
9 files changed, 311 insertions, 0 deletions
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php b/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php new file mode 100644 index 000000000..a80956c9d --- /dev/null +++ b/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php @@ -0,0 +1,39 @@ +<?php + +namespace GuzzleHttp\Exception; + +use Psr\Http\Message\RequestInterface; +use Psr\Http\Message\ResponseInterface; + +/** + * Exception when an HTTP error occurs (4xx or 5xx error) + */ +class BadResponseException extends RequestException +{ + public function __construct( + string $message, + RequestInterface $request, + ResponseInterface $response, + \Throwable $previous = null, + array $handlerContext = [] + ) { + parent::__construct($message, $request, $response, $previous, $handlerContext); + } + + /** + * Current exception and the ones that extend it will always have a response. + */ + public function hasResponse(): bool + { + return true; + } + + /** + * This function narrows the return type from the parent class and does not allow it to be nullable. + */ + public function getResponse(): ResponseInterface + { + /** @var ResponseInterface */ + return parent::getResponse(); + } +} diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php b/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php new file mode 100644 index 000000000..12fa5e351 --- /dev/null +++ b/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php @@ -0,0 +1,10 @@ +<?php + +namespace GuzzleHttp\Exception; + +/** + * Exception when a client error is encountered (4xx codes) + */ +class ClientException extends BadResponseException +{ +} diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php b/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php new file mode 100644 index 000000000..e1a31519c --- /dev/null +++ b/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php @@ -0,0 +1,56 @@ +<?php + +namespace GuzzleHttp\Exception; + +use Psr\Http\Client\NetworkExceptionInterface; +use Psr\Http\Message\RequestInterface; + +/** + * Exception thrown when a connection cannot be established. + * + * Note that no response is present for a ConnectException + */ +class ConnectException extends TransferException implements NetworkExceptionInterface +{ + /** + * @var RequestInterface + */ + private $request; + + /** + * @var array + */ + private $handlerContext; + + public function __construct( + string $message, + RequestInterface $request, + \Throwable $previous = null, + array $handlerContext = [] + ) { + parent::__construct($message, 0, $previous); + $this->request = $request; + $this->handlerContext = $handlerContext; + } + + /** + * Get the request that caused the exception + */ + public function getRequest(): RequestInterface + { + return $this->request; + } + + /** + * Get contextual information about the error from the underlying handler. + * + * The contents of this array will vary depending on which handler you are + * using. It may also be just an empty array. Relying on this data will + * couple you to a specific handler, but can give more debug information + * when needed. + */ + public function getHandlerContext(): array + { + return $this->handlerContext; + } +} diff --git a/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php b/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php new file mode 100644 index 000000000..fa3ed6998 --- /dev/null +++ b/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php @@ -0,0 +1,9 @@ +<?php + +namespace GuzzleHttp\Exception; + +use Psr\Http\Client\ClientExceptionInterface; + +interface GuzzleException extends ClientExceptionInterface +{ +} diff --git a/vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php b/vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php new file mode 100644 index 000000000..bfd20e232 --- /dev/null +++ b/vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php @@ -0,0 +1,7 @@ +<?php + +namespace GuzzleHttp\Exception; + +final class InvalidArgumentException extends \InvalidArgumentException implements GuzzleException +{ +} diff --git a/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php b/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php new file mode 100644 index 000000000..c2d0a9ccc --- /dev/null +++ b/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php @@ -0,0 +1,166 @@ +<?php + +namespace GuzzleHttp\Exception; + +use GuzzleHttp\BodySummarizer; +use GuzzleHttp\BodySummarizerInterface; +use Psr\Http\Client\RequestExceptionInterface; +use Psr\Http\Message\RequestInterface; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\UriInterface; + +/** + * HTTP Request exception + */ +class RequestException extends TransferException implements RequestExceptionInterface +{ + /** + * @var RequestInterface + */ + private $request; + + /** + * @var ResponseInterface|null + */ + private $response; + + /** + * @var array + */ + private $handlerContext; + + public function __construct( + string $message, + RequestInterface $request, + ResponseInterface $response = null, + \Throwable $previous = null, + array $handlerContext = [] + ) { + // Set the code of the exception if the response is set and not future. + $code = $response ? $response->getStatusCode() : 0; + parent::__construct($message, $code, $previous); + $this->request = $request; + $this->response = $response; + $this->handlerContext = $handlerContext; + } + + /** + * Wrap non-RequestExceptions with a RequestException + */ + public static function wrapException(RequestInterface $request, \Throwable $e): RequestException + { + return $e instanceof RequestException ? $e : new RequestException($e->getMessage(), $request, null, $e); + } + + /** + * Factory method to create a new exception with a normalized error message + * + * @param RequestInterface $request Request sent + * @param ResponseInterface $response Response received + * @param \Throwable|null $previous Previous exception + * @param array $handlerContext Optional handler context + * @param BodySummarizerInterface|null $bodySummarizer Optional body summarizer + */ + public static function create( + RequestInterface $request, + ResponseInterface $response = null, + \Throwable $previous = null, + array $handlerContext = [], + BodySummarizerInterface $bodySummarizer = null + ): self { + if (!$response) { + return new self( + 'Error completing request', + $request, + null, + $previous, + $handlerContext + ); + } + + $level = (int) \floor($response->getStatusCode() / 100); + if ($level === 4) { + $label = 'Client error'; + $className = ClientException::class; + } elseif ($level === 5) { + $label = 'Server error'; + $className = ServerException::class; + } else { + $label = 'Unsuccessful request'; + $className = __CLASS__; + } + + $uri = $request->getUri(); + $uri = static::obfuscateUri($uri); + + // Client Error: `GET /` resulted in a `404 Not Found` response: + // <html> ... (truncated) + $message = \sprintf( + '%s: `%s %s` resulted in a `%s %s` response', + $label, + $request->getMethod(), + $uri->__toString(), + $response->getStatusCode(), + $response->getReasonPhrase() + ); + + $summary = ($bodySummarizer ?? new BodySummarizer())->summarize($response); + + if ($summary !== null) { + $message .= ":\n{$summary}\n"; + } + + return new $className($message, $request, $response, $previous, $handlerContext); + } + + /** + * Obfuscates URI if there is a username and a password present + */ + private static function obfuscateUri(UriInterface $uri): UriInterface + { + $userInfo = $uri->getUserInfo(); + + if (false !== ($pos = \strpos($userInfo, ':'))) { + return $uri->withUserInfo(\substr($userInfo, 0, $pos), '***'); + } + + return $uri; + } + + /** + * Get the request that caused the exception + */ + public function getRequest(): RequestInterface + { + return $this->request; + } + + /** + * Get the associated response + */ + public function getResponse(): ?ResponseInterface + { + return $this->response; + } + + /** + * Check if a response was received + */ + public function hasResponse(): bool + { + return $this->response !== null; + } + + /** + * Get contextual information about the error from the underlying handler. + * + * The contents of this array will vary depending on which handler you are + * using. It may also be just an empty array. Relying on this data will + * couple you to a specific handler, but can give more debug information + * when needed. + */ + public function getHandlerContext(): array + { + return $this->handlerContext; + } +} diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php b/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php new file mode 100644 index 000000000..8055e067c --- /dev/null +++ b/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php @@ -0,0 +1,10 @@ +<?php + +namespace GuzzleHttp\Exception; + +/** + * Exception when a server error is encountered (5xx codes) + */ +class ServerException extends BadResponseException +{ +} diff --git a/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php b/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php new file mode 100644 index 000000000..fad3a57cf --- /dev/null +++ b/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php @@ -0,0 +1,7 @@ +<?php + +namespace GuzzleHttp\Exception; + +class TooManyRedirectsException extends RequestException +{ +} diff --git a/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php b/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php new file mode 100644 index 000000000..507633608 --- /dev/null +++ b/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php @@ -0,0 +1,7 @@ +<?php + +namespace GuzzleHttp\Exception; + +class TransferException extends \RuntimeException implements GuzzleException +{ +} |