PluginProbe
BerqWP – All-In-One Optimization for Core Web Vitals, Cache, CDN, Images, CSS & JavaScript / 4.1.17
BerqWP – All-In-One Optimization for Core Web Vitals, Cache, CDN, Images, CSS & JavaScript v4.1.17
4.1.19 4.1.18 4.1.17 4.1.16 4.1.15 4.1.14 4.1.13 4.1.12 4.1.11 4.1.10 4.0.30 4.0.29 4.0.28 4.0.27 4.0.26 4.0.24 4.0.25 4.0.23 4.0.22 4.0.21 4.0.19 4.0.18 4.0.17 4.0.16 1.9.3 All 173 releases
searchpro / BerqWP / vendor / guzzlehttp / guzzle / src / Exception / RequestException.php

RequestException.php in BerqWP – All-In-One Optimization for Core Web Vitals, Cache, CDN, Images, CSS & JavaScript 4.1.17, at BerqWP/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php

151 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace GuzzleHttp\Exception;
4
5 use GuzzleHttp\BodySummarizer;
6 use GuzzleHttp\BodySummarizerInterface;
7 use Psr\Http\Client\RequestExceptionInterface;
8 use Psr\Http\Message\RequestInterface;
9 use Psr\Http\Message\ResponseInterface;
10
11 /**
12 * HTTP Request exception
13 */
14 class RequestException extends TransferException implements RequestExceptionInterface
15 {
16 /**
17 * @var RequestInterface
18 */
19 private $request;
20
21 /**
22 * @var ResponseInterface|null
23 */
24 private $response;
25
26 /**
27 * @var array
28 */
29 private $handlerContext;
30
31 public function __construct(
32 string $message,
33 RequestInterface $request,
34 ?ResponseInterface $response = null,
35 ?\Throwable $previous = null,
36 array $handlerContext = []
37 ) {
38 // Set the code of the exception if the response is set and not future.
39 $code = $response ? $response->getStatusCode() : 0;
40 parent::__construct($message, $code, $previous);
41 $this->request = $request;
42 $this->response = $response;
43 $this->handlerContext = $handlerContext;
44 }
45
46 /**
47 * Wrap non-RequestExceptions with a RequestException
48 */
49 public static function wrapException(RequestInterface $request, \Throwable $e): RequestException
50 {
51 return $e instanceof RequestException ? $e : new RequestException($e->getMessage(), $request, null, $e);
52 }
53
54 /**
55 * Factory method to create a new exception with a normalized error message
56 *
57 * @param RequestInterface $request Request sent
58 * @param ResponseInterface $response Response received
59 * @param \Throwable|null $previous Previous exception
60 * @param array $handlerContext Optional handler context
61 * @param BodySummarizerInterface|null $bodySummarizer Optional body summarizer
62 */
63 public static function create(
64 RequestInterface $request,
65 ?ResponseInterface $response = null,
66 ?\Throwable $previous = null,
67 array $handlerContext = [],
68 ?BodySummarizerInterface $bodySummarizer = null
69 ): self {
70 if (!$response) {
71 return new self(
72 'Error completing request',
73 $request,
74 null,
75 $previous,
76 $handlerContext
77 );
78 }
79
80 $level = (int) \floor($response->getStatusCode() / 100);
81 if ($level === 4) {
82 $label = 'Client error';
83 $className = ClientException::class;
84 } elseif ($level === 5) {
85 $label = 'Server error';
86 $className = ServerException::class;
87 } else {
88 $label = 'Unsuccessful request';
89 $className = __CLASS__;
90 }
91
92 $uri = \GuzzleHttp\Psr7\Utils::redactUserInfo($request->getUri());
93
94 // Client Error: `GET /` resulted in a `404 Not Found` response:
95 // <html> ... (truncated)
96 $message = \sprintf(
97 '%s: `%s %s` resulted in a `%s %s` response',
98 $label,
99 $request->getMethod(),
100 $uri->__toString(),
101 $response->getStatusCode(),
102 $response->getReasonPhrase()
103 );
104
105 $summary = ($bodySummarizer ?? new BodySummarizer())->summarize($response);
106
107 if ($summary !== null) {
108 $message .= ":\n{$summary}\n";
109 }
110
111 return new $className($message, $request, $response, $previous, $handlerContext);
112 }
113
114 /**
115 * Get the request that caused the exception
116 */
117 public function getRequest(): RequestInterface
118 {
119 return $this->request;
120 }
121
122 /**
123 * Get the associated response
124 */
125 public function getResponse(): ?ResponseInterface
126 {
127 return $this->response;
128 }
129
130 /**
131 * Check if a response was received
132 */
133 public function hasResponse(): bool
134 {
135 return $this->response !== null;
136 }
137
138 /**
139 * Get contextual information about the error from the underlying handler.
140 *
141 * The contents of this array will vary depending on which handler you are
142 * using. It may also be just an empty array. Relying on this data will
143 * couple you to a specific handler, but can give more debug information
144 * when needed.
145 */
146 public function getHandlerContext(): array
147 {
148 return $this->handlerContext;
149 }
150 }
151