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/MessageFormatter.php +33 -21 1.1.11.4.1 View file →
@@ -30,25 +30,31 @@
30 30 * - {req_headers}: Request headers
31 31 * - {res_headers}: Response headers
32 32 * - {req_body}: Request body
33 33 * - {res_body}: Response body
34 + *
35 + * @final
34 36 */
35 -class MessageFormatter
37 +class MessageFormatter implements MessageFormatterInterface
36 38 {
37 39 /**
38 40 * Apache Common Log Format.
39 - * @link http://httpd.apache.org/docs/2.4/logs.html#common
41 + *
42 + * @see https://httpd.apache.org/docs/2.4/logs.html#common
43 + *
40 44 * @var string
41 45 */
42 - const CLF = "{hostname} {req_header_User-Agent} - [{date_common_log}] \"{method} {target} HTTP/{version}\" {code} {res_header_Content-Length}";
43 - const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}";
44 - const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}';
45 - /** @var string Template used to format log messages */
46 + public const CLF = '{hostname} {req_header_User-Agent} - [{date_common_log}] "{method} {target} HTTP/{version}" {code} {res_header_Content-Length}';
47 + public const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}";
48 + public const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}';
49 + /**
50 + * @var string Template used to format log messages
51 + */
46 52 private $template;
47 53 /**
48 54 * @param string $template Log message template
49 55 */
50 - public function __construct($template = self::CLF)
56 + public function __construct(?string $template = self::CLF)
51 57 {
52 58 $this->template = $template ?: self::CLF;
53 59 }
54 60 /**
@@ -53,17 +59,16 @@
53 59 }
54 60 /**
55 61 * Returns a formatted message string.
56 62 *
57 - * @param RequestInterface $request Request that was sent
58 - * @param ResponseInterface $response Response that was received
59 - * @param \Exception $error Exception that was received
60 - *
61 - * @return string
63 + * @param RequestInterface $request Request that was sent
64 + * @param ResponseInterface|null $response Response that was received
65 + * @param \Throwable|null $error Exception that was received
62 66 */
63 - public function format(RequestInterface $request, ResponseInterface $response = null, \Exception $error = null)
67 + public function format(RequestInterface $request, ?ResponseInterface $response = null, ?\Throwable $error = null) : string
64 68 {
65 69 $cache = [];
70 + /** @var string */
66 71 return \preg_replace_callback('/{\\s*([A-Za-z_\\-\\.0-9]+)\\s*}/', function (array $matches) use($request, $response, $error, &$cache) {
67 72 if (isset($cache[$matches[1]])) {
68 73 return $cache[$matches[1]];
69 74 }
@@ -69,12 +74,12 @@
69 74 }
70 75 $result = '';
71 76 switch ($matches[1]) {
72 77 case 'request':
73 - $result = Psr7\str($request);
78 + $result = Psr7\Message::toString($request);
74 79 break;
75 80 case 'response':
76 - $result = $response ? Psr7\str($response) : '';
81 + $result = $response ? Psr7\Message::toString($response) : '';
77 82 break;
78 83 case 'req_headers':
79 84 $result = \trim($request->getMethod() . ' ' . $request->getRequestTarget()) . ' HTTP/' . $request->getProtocolVersion() . "\r\n" . $this->headers($request);
80 85 break;
@@ -81,12 +86,21 @@
81 86 case 'res_headers':
82 87 $result = $response ? \sprintf('HTTP/%s %d %s', $response->getProtocolVersion(), $response->getStatusCode(), $response->getReasonPhrase()) . "\r\n" . $this->headers($response) : 'NULL';
83 88 break;
84 89 case 'req_body':
85 - $result = $request->getBody();
90 + $result = $request->getBody()->__toString();
86 91 break;
87 92 case 'res_body':
88 - $result = $response ? $response->getBody() : 'NULL';
93 + if (!$response instanceof ResponseInterface) {
94 + $result = 'NULL';
95 + break;
96 + }
97 + $body = $response->getBody();
98 + if (!$body->isSeekable()) {
99 + $result = 'RESPONSE_NOT_LOGGEABLE';
100 + break;
101 + }
102 + $result = $response->getBody()->__toString();
89 103 break;
90 104 case 'ts':
91 105 case 'date_iso_8601':
92 106 $result = \gmdate('c');
@@ -101,9 +115,9 @@
101 115 $result = $request->getProtocolVersion();
102 116 break;
103 117 case 'uri':
104 118 case 'url':
105 - $result = $request->getUri();
119 + $result = $request->getUri()->__toString();
106 120 break;
107 121 case 'target':
108 122 $result = $request->getRequestTarget();
109 123 break;
@@ -141,12 +155,10 @@
141 155 }, $this->template);
142 156 }
143 157 /**
144 158 * Get headers from message as string
145 - *
146 - * @return string
147 159 */
148 - private function headers(MessageInterface $message)
160 + private function headers(MessageInterface $message) : string
149 161 {
150 162 $result = '';
151 163 foreach ($message->getHeaders() as $name => $values) {
152 164 $result .= $name . ': ' . \implode(', ', $values) . "\r\n";