PluginProbe
Media Cloud Sync / 1.4.1
Media Cloud Sync v1.4.1
1.4.1 1.4.0 1.3.12 1.3.11 1.3.10 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.2.0 1.2.10 1.2.11 1.2.12 1.2.13 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 All 35 releases
← All changes | includes/sdk/s3/GuzzleHttp/Exception/RequestException.php +31 -67 1.0.11.4.1 View file →
@@ -1,27 +1,34 @@
1 1 <?php
2 2
3 3 namespace Dudlewebs\WPMCS\s3\GuzzleHttp\Exception;
4 4
5 -use Dudlewebs\WPMCS\s3\GuzzleHttp\Promise\PromiseInterface;
5 +use Dudlewebs\WPMCS\s3\GuzzleHttp\BodySummarizer;
6 +use Dudlewebs\WPMCS\s3\GuzzleHttp\BodySummarizerInterface;
7 +use Dudlewebs\WPMCS\s3\Psr\Http\Client\RequestExceptionInterface;
6 8 use Dudlewebs\WPMCS\s3\Psr\Http\Message\RequestInterface;
7 9 use Dudlewebs\WPMCS\s3\Psr\Http\Message\ResponseInterface;
8 -use Dudlewebs\WPMCS\s3\Psr\Http\Message\UriInterface;
9 10 /**
10 11 * HTTP Request exception
11 12 */
12 -class RequestException extends TransferException
13 +class RequestException extends TransferException implements RequestExceptionInterface
13 14 {
14 - /** @var RequestInterface */
15 + /**
16 + * @var RequestInterface
17 + */
15 18 private $request;
16 - /** @var ResponseInterface|null */
19 + /**
20 + * @var ResponseInterface|null
21 + */
17 22 private $response;
18 - /** @var array */
23 + /**
24 + * @var array
25 + */
19 26 private $handlerContext;
20 - public function __construct($message, RequestInterface $request, ResponseInterface $response = null, \Exception $previous = null, array $handlerContext = [])
27 + public function __construct(string $message, RequestInterface $request, ?ResponseInterface $response = null, ?\Throwable $previous = null, array $handlerContext = [])
21 28 {
22 29 // Set the code of the exception if the response is set and not future.
23 - $code = $response && !$response instanceof PromiseInterface ? $response->getStatusCode() : 0;
30 + $code = $response ? $response->getStatusCode() : 0;
24 31 parent::__construct($message, $code, $previous);
25 32 $this->request = $request;
26 33 $this->response = $response;
27 34 $this->handlerContext = $handlerContext;
@@ -27,15 +34,10 @@
27 34 $this->handlerContext = $handlerContext;
28 35 }
29 36 /**
30 37 * Wrap non-RequestExceptions with a RequestException
31 - *
32 - * @param RequestInterface $request
33 - * @param \Exception $e
34 - *
35 - * @return RequestException
36 38 */
37 - public static function wrapException(RequestInterface $request, \Exception $e)
39 + public static function wrapException(RequestInterface $request, \Throwable $e) : RequestException
38 40 {
39 41 return $e instanceof RequestException ? $e : new RequestException($e->getMessage(), $request, null, $e);
40 42 }
41 43 /**
@@ -40,19 +42,18 @@
40 42 }
41 43 /**
42 44 * Factory method to create a new exception with a normalized error message
43 45 *
44 - * @param RequestInterface $request Request
45 - * @param ResponseInterface $response Response received
46 - * @param \Exception $previous Previous exception
47 - * @param array $ctx Optional handler context.
48 - *
49 - * @return self
46 + * @param RequestInterface $request Request sent
47 + * @param ResponseInterface $response Response received
48 + * @param \Throwable|null $previous Previous exception
49 + * @param array $handlerContext Optional handler context
50 + * @param BodySummarizerInterface|null $bodySummarizer Optional body summarizer
50 51 */
51 - public static function create(RequestInterface $request, ResponseInterface $response = null, \Exception $previous = null, array $ctx = [])
52 + public static function create(RequestInterface $request, ?ResponseInterface $response = null, ?\Throwable $previous = null, array $handlerContext = [], ?BodySummarizerInterface $bodySummarizer = null) : self
52 53 {
53 54 if (!$response) {
54 - return new self('Error completing request', $request, null, $previous, $ctx);
55 + return new self('Error completing request', $request, null, $previous, $handlerContext);
55 56 }
56 57 $level = (int) \floor($response->getStatusCode() / 100);
57 58 if ($level === 4) {
58 59 $label = 'Client error';
@@ -63,71 +64,36 @@
63 64 } else {
64 65 $label = 'Unsuccessful request';
65 66 $className = __CLASS__;
66 67 }
67 - $uri = $request->getUri();
68 - $uri = static::obfuscateUri($uri);
68 + $uri = \Dudlewebs\WPMCS\s3\GuzzleHttp\Psr7\Utils::redactUserInfo($request->getUri());
69 69 // Client Error: `GET /` resulted in a `404 Not Found` response:
70 70 // <html> ... (truncated)
71 - $message = \sprintf('%s: `%s %s` resulted in a `%s %s` response', $label, $request->getMethod(), $uri, $response->getStatusCode(), $response->getReasonPhrase());
72 - $summary = static::getResponseBodySummary($response);
71 + $message = \sprintf('%s: `%s %s` resulted in a `%s %s` response', $label, $request->getMethod(), $uri->__toString(), $response->getStatusCode(), $response->getReasonPhrase());
72 + $summary = ($bodySummarizer ?? new BodySummarizer())->summarize($response);
73 73 if ($summary !== null) {
74 74 $message .= ":\n{$summary}\n";
75 75 }
76 - return new $className($message, $request, $response, $previous, $ctx);
76 + return new $className($message, $request, $response, $previous, $handlerContext);
77 77 }
78 78 /**
79 - * Get a short summary of the response
80 - *
81 - * Will return `null` if the response is not printable.
82 - *
83 - * @param ResponseInterface $response
84 - *
85 - * @return string|null
86 - */
87 - public static function getResponseBodySummary(ResponseInterface $response)
88 - {
89 - return \Dudlewebs\WPMCS\s3\GuzzleHttp\Psr7\get_message_body_summary($response);
90 - }
91 - /**
92 - * Obfuscates URI if there is a username and a password present
93 - *
94 - * @param UriInterface $uri
95 - *
96 - * @return UriInterface
97 - */
98 - private static function obfuscateUri(UriInterface $uri)
99 - {
100 - $userInfo = $uri->getUserInfo();
101 - if (\false !== ($pos = \strpos($userInfo, ':'))) {
102 - return $uri->withUserInfo(\substr($userInfo, 0, $pos), '***');
103 - }
104 - return $uri;
105 - }
106 - /**
107 79 * Get the request that caused the exception
108 - *
109 - * @return RequestInterface
110 80 */
111 - public function getRequest()
81 + public function getRequest() : RequestInterface
112 82 {
113 83 return $this->request;
114 84 }
115 85 /**
116 86 * Get the associated response
117 - *
118 - * @return ResponseInterface|null
119 87 */
120 - public function getResponse()
88 + public function getResponse() : ?ResponseInterface
121 89 {
122 90 return $this->response;
123 91 }
124 92 /**
125 93 * Check if a response was received
126 - *
127 - * @return bool
128 94 */
129 - public function hasResponse()
95 + public function hasResponse() : bool
130 96 {
131 97 return $this->response !== null;
132 98 }
133 99 /**
@@ -136,12 +102,10 @@
136 102 * The contents of this array will vary depending on which handler you are
137 103 * using. It may also be just an empty array. Relying on this data will
138 104 * couple you to a specific handler, but can give more debug information
139 105 * when needed.
140 - *
141 - * @return array
142 106 */
143 - public function getHandlerContext()
107 + public function getHandlerContext() : array
144 108 {
145 109 return $this->handlerContext;
146 110 }
147 111 }