This commit is contained in:
2021-08-01 15:32:28 +08:00
parent 3ecc305238
commit c33a5af377
+8 -20
View File
@@ -3,6 +3,8 @@
namespace Server; namespace Server;
use Exception; use Exception;
use HttpServer\Http\Context;
use HttpServer\Http\Request as HSRequest;
use HttpServer\Route\Router; use HttpServer\Route\Router;
use ReflectionException; use ReflectionException;
use Snowflake\Exception\NotFindClassException; use Snowflake\Exception\NotFindClassException;
@@ -28,6 +30,8 @@ class HTTPServerListener extends Abstracts\Server
private Router $router; private Router $router;
private \HttpServer\Http\Response $response;
/** /**
* HTTPServerListener constructor. * HTTPServerListener constructor.
@@ -36,6 +40,7 @@ class HTTPServerListener extends Abstracts\Server
public function __construct() public function __construct()
{ {
$this->router = Snowflake::getApp('router'); $this->router = Snowflake::getApp('router');
$this->response = Snowflake::getApp('response');
parent::__construct(); parent::__construct();
} }
@@ -91,31 +96,14 @@ class HTTPServerListener extends Abstracts\Server
public function onRequest(Request $request, Response $response) public function onRequest(Request $request, Response $response)
{ {
try { try {
/** @var \HttpServer\Http\Response $sResponse */ Context::setContext(Response::class, $response);
[$sRequest, $sResponse] = $this->request($request, $response);
$result = 'ok'; $result = $this->router->dispatch(HSRequest::create($request));
// $result = $this->router->dispatch($sRequest);
} catch (Error | Throwable $exception) { } catch (Error | Throwable $exception) {
$result = $this->router->exception($exception); $result = $this->router->exception($exception);
} finally { } finally {
if (!isset($sResponse)) { $this->response->send($result);
return;
} }
$sResponse->send($result);
}
}
/**
* @param Request $request
* @param Response $response
* @return array
* @throws Exception
*/
public function request(Request $request, Response $response): array
{
return [\HttpServer\Http\Request::create($request), \HttpServer\Http\Response::create($response)];
} }