This commit is contained in:
2021-08-05 19:14:08 +08:00
parent f7ec2b6b98
commit 7f9ae9556b
9 changed files with 175 additions and 43 deletions
+61
View File
@@ -0,0 +1,61 @@
<?php
namespace Server\Constrict;
use HttpServer\Http\Context;
use HttpServer\Http\HttpHeaders;
use HttpServer\Http\HttpParams;
use HttpServer\Http\Request as HttpResponse;
use HttpServer\Http\Response;
use ReflectionException;
use Server\RequestInterface;
use Snowflake\Exception\NotFindClassException;
use Snowflake\Snowflake;
/**
*
*/
class Request implements RequestInterface
{
/**
* @param $name
* @param $args
* @return mixed
*/
public function __call($name, $args)
{
return Context::getContext(HttpResponse::class)->{$name}(...$args);
}
/**
* @param \Swoole\Http\Request $request
* @return Request
* @throws ReflectionException
* @throws NotFindClassException
*/
public static function create(\Swoole\Http\Request $request): RequestInterface
{
$sRequest = new HttpResponse();
$sRequest->setUri($request->header['request_uri']);
$sRequest->setClientId($request->fd);
$sRequest->headers = new HttpHeaders();
$sRequest->headers->setHeaders(array_merge($request->header, $request->server));
$sRequest->params = new HttpParams();
$sRequest->params->setRawContent($request->rawContent(), $sRequest->headers->getContentType());
$sRequest->params->setFiles($request->files);
$sRequest->params->setPosts($request->post);
$sRequest->params->setGets($request->get);
Context::setContext(Request::class, $sRequest);
Context::setContext(Response::class, new Response());
return Snowflake::getDi()->get(Request::class);
}
}
+1 -1
View File
@@ -117,7 +117,7 @@ class HTTPServerListener extends Abstracts\Server
public function onRequest(Request $request, Response $response)
{
try {
$node = $this->router->Branch_search(HSRequest::create($request));
$node = $this->router->Branch_search(Constrict\Request::create($request));
if (!($node instanceof Node)) {
throw new RequestException('<h2>HTTP 404 Not Found</h2><hr><i>Powered by Swoole</i>', 404);
}
+15
View File
@@ -0,0 +1,15 @@
<?php
namespace Server;
use HttpServer\Http\Request;
/**
*
* @mixin Request
*/
interface RequestInterface
{
}