From 6c133983fb6aceb754c20faa7db3e7268531af10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mr=C2=B7x?= Date: Thu, 9 Sep 2021 17:25:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- http-server/Constrict/Request.php | 4 ++-- http-server/Constrict/Response.php | 22 ++++++++++++++++++++-- http-server/ResponseInterface.php | 4 ---- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/http-server/Constrict/Request.php b/http-server/Constrict/Request.php index bf9ff7b7..d60b2791 100644 --- a/http-server/Constrict/Request.php +++ b/http-server/Constrict/Request.php @@ -24,7 +24,7 @@ class Request implements RequestInterface */ private function __call__(): RequestMessage { - return Context::getContext(RequestMessage::class, new RequestMessage()); + return Context::getContext(RequestInterface::class, new RequestMessage()); } @@ -47,7 +47,7 @@ class Request implements RequestInterface { Context::setContext(ResponseInterface::class, $response = new Response()); - Context::setContext(RequestMessage::class, RequestMessage::parseRequest($request)); + Context::setContext(RequestInterface::class, RequestMessage::parseRequest($request)); return [Kiri::getDi()->get(Request::class), $response]; } diff --git a/http-server/Constrict/Response.php b/http-server/Constrict/Response.php index 77a78618..3c18a725 100644 --- a/http-server/Constrict/Response.php +++ b/http-server/Constrict/Response.php @@ -6,9 +6,13 @@ namespace Server\Constrict; use Http\Context\Context; use JetBrains\PhpStorm\Pure; +use Kiri\Kiri; use Psr\Http\Message\StreamInterface; +use Server\Message\Request as RequestMessage; use Server\Message\Response as Psr7Response; +use Server\RequestInterface; use Server\ResponseInterface; +use Server\ServerManager; use Server\SInterface\DownloadInterface; @@ -314,7 +318,11 @@ class Response implements ResponseInterface */ public function getClientId(): int { - return $this->__call__()->{__FUNCTION__}(); + if (!Context::hasContext('client.id.property')) { + $request = Context::getContext(RequestInterface::class, new RequestMessage()); + return Context::setContext('client.id.property', $request->getClientId()); + } + return (int)Context::getContext('client.id.property'); } @@ -323,6 +331,16 @@ class Response implements ResponseInterface */ public function getClientInfo(): array { - return $this->__call__()->{__FUNCTION__}(); + if (!Context::hasContext('client.info.property')) { + $request = Context::getContext(RequestInterface::class, new RequestMessage()); + + $server = Kiri::getDi()->get(ServerManager::class)->getServer(); + + $clientInfo = $server->getClientInfo($request->getClientId()); + + return Context::setContext('client.info.property', $clientInfo); + } + return Context::getContext('client.info.property'); } + } diff --git a/http-server/ResponseInterface.php b/http-server/ResponseInterface.php index 5519bd08..a0ccef64 100644 --- a/http-server/ResponseInterface.php +++ b/http-server/ResponseInterface.php @@ -21,10 +21,6 @@ interface ResponseInterface extends \Psr\Http\Message\ResponseInterface public function file(string $path): DownloadInterface; - public function getClientId(): int; - public function getClientInfo(): array; - - /** * @param $responseData * @return string|array|bool|int|null