京东云

This commit is contained in:
“wanyongkang”
2024-05-28 17:04:50 +08:00
parent f644932afb
commit f3c7432100
672 changed files with 209344 additions and 6593 deletions

View File

@@ -1,5 +1,4 @@
<?php
namespace GuzzleHttp;
use Psr\Http\Message\MessageInterface;
@@ -32,31 +31,25 @@ use Psr\Http\Message\ResponseInterface;
* - {res_headers}: Response headers
* - {req_body}: Request body
* - {res_body}: Response body
*
* @final
*/
class MessageFormatter implements MessageFormatterInterface
class MessageFormatter
{
/**
* Apache Common Log Format.
*
* @see https://httpd.apache.org/docs/2.4/logs.html#common
*
* @link http://httpd.apache.org/docs/2.4/logs.html#common
* @var string
*/
public const CLF = '{hostname} {req_header_User-Agent} - [{date_common_log}] "{method} {target} HTTP/{version}" {code} {res_header_Content-Length}';
public const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}";
public const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}';
const CLF = "{hostname} {req_header_User-Agent} - [{date_common_log}] \"{method} {target} HTTP/{version}\" {code} {res_header_Content-Length}";
const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}";
const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}';
/**
* @var string Template used to format log messages
*/
/** @var string Template used to format log messages */
private $template;
/**
* @param string $template Log message template
*/
public function __construct(?string $template = self::CLF)
public function __construct($template = self::CLF)
{
$this->template = $template ?: self::CLF;
}
@@ -64,16 +57,20 @@ class MessageFormatter implements MessageFormatterInterface
/**
* Returns a formatted message string.
*
* @param RequestInterface $request Request that was sent
* @param ResponseInterface|null $response Response that was received
* @param \Throwable|null $error Exception that was received
* @param RequestInterface $request Request that was sent
* @param ResponseInterface $response Response that was received
* @param \Exception $error Exception that was received
*
* @return string
*/
public function format(RequestInterface $request, ResponseInterface $response = null, \Throwable $error = null): string
{
public function format(
RequestInterface $request,
ResponseInterface $response = null,
\Exception $error = null
) {
$cache = [];
/** @var string */
return \preg_replace_callback(
return preg_replace_callback(
'/{\s*([A-Za-z_\-\.0-9]+)\s*}/',
function (array $matches) use ($request, $response, $error, &$cache) {
if (isset($cache[$matches[1]])) {
@@ -83,51 +80,39 @@ class MessageFormatter implements MessageFormatterInterface
$result = '';
switch ($matches[1]) {
case 'request':
$result = Psr7\Message::toString($request);
$result = Psr7\str($request);
break;
case 'response':
$result = $response ? Psr7\Message::toString($response) : '';
$result = $response ? Psr7\str($response) : '';
break;
case 'req_headers':
$result = \trim($request->getMethod()
.' '.$request->getRequestTarget())
.' HTTP/'.$request->getProtocolVersion()."\r\n"
.$this->headers($request);
$result = trim($request->getMethod()
. ' ' . $request->getRequestTarget())
. ' HTTP/' . $request->getProtocolVersion() . "\r\n"
. $this->headers($request);
break;
case 'res_headers':
$result = $response ?
\sprintf(
sprintf(
'HTTP/%s %d %s',
$response->getProtocolVersion(),
$response->getStatusCode(),
$response->getReasonPhrase()
)."\r\n".$this->headers($response)
) . "\r\n" . $this->headers($response)
: 'NULL';
break;
case 'req_body':
$result = $request->getBody()->__toString();
$result = $request->getBody();
break;
case 'res_body':
if (!$response instanceof ResponseInterface) {
$result = 'NULL';
break;
}
$body = $response->getBody();
if (!$body->isSeekable()) {
$result = 'RESPONSE_NOT_LOGGEABLE';
break;
}
$result = $response->getBody()->__toString();
$result = $response ? $response->getBody() : 'NULL';
break;
case 'ts':
case 'date_iso_8601':
$result = \gmdate('c');
$result = gmdate('c');
break;
case 'date_common_log':
$result = \date('d/M/Y:H:i:s O');
$result = date('d/M/Y:H:i:s O');
break;
case 'method':
$result = $request->getMethod();
@@ -137,7 +122,7 @@ class MessageFormatter implements MessageFormatterInterface
break;
case 'uri':
case 'url':
$result = $request->getUri()->__toString();
$result = $request->getUri();
break;
case 'target':
$result = $request->getRequestTarget();
@@ -154,7 +139,7 @@ class MessageFormatter implements MessageFormatterInterface
$result = $request->getHeaderLine('Host');
break;
case 'hostname':
$result = \gethostname();
$result = gethostname();
break;
case 'code':
$result = $response ? $response->getStatusCode() : 'NULL';
@@ -167,17 +152,16 @@ class MessageFormatter implements MessageFormatterInterface
break;
default:
// handle prefixed dynamic headers
if (\strpos($matches[1], 'req_header_') === 0) {
$result = $request->getHeaderLine(\substr($matches[1], 11));
} elseif (\strpos($matches[1], 'res_header_') === 0) {
if (strpos($matches[1], 'req_header_') === 0) {
$result = $request->getHeaderLine(substr($matches[1], 11));
} elseif (strpos($matches[1], 'res_header_') === 0) {
$result = $response
? $response->getHeaderLine(\substr($matches[1], 11))
? $response->getHeaderLine(substr($matches[1], 11))
: 'NULL';
}
}
$cache[$matches[1]] = $result;
return $result;
},
$this->template
@@ -186,14 +170,16 @@ class MessageFormatter implements MessageFormatterInterface
/**
* Get headers from message as string
*
* @return string
*/
private function headers(MessageInterface $message): string
private function headers(MessageInterface $message)
{
$result = '';
foreach ($message->getHeaders() as $name => $values) {
$result .= $name.': '.\implode(', ', $values)."\r\n";
$result .= $name . ': ' . implode(', ', $values) . "\r\n";
}
return \trim($result);
return trim($result);
}
}