This commit is contained in:
2023-04-15 23:31:16 +08:00
parent 2d9ac93a7a
commit 41a53200b3
69 changed files with 1678 additions and 749 deletions
+36 -1
View File
@@ -2,7 +2,42 @@
namespace Kiri\Router\Base;
class AbstractHandler
use Kiri\Inject\Route\TestResponse;
use Kiri\Router\Handler;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
abstract class AbstractHandler
{
public int $offset = 0;
/**
* @param array $middlewares
* @param Handler $handler
*/
public function __construct(public array $middlewares, public Handler $handler)
{
}
/**
* @param ServerRequestInterface $request
* @return ResponseInterface
* @throws \ReflectionException
*/
public function execute(ServerRequestInterface $request): ResponseInterface
{
if (!isset($this->middlewares[$this->offset])) {
return $this->handler->handle($request);
}
$middleware = di($this->middlewares[$this->offset]);
$this->offset += 1;
return $middleware->process($request);
}
}
+1 -1
View File
@@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Kiri\Message\Handler;
namespace Kiri\Router\Base;
/**
+1 -1
View File
@@ -1,6 +1,6 @@
<?php
namespace Kiri\Message\Handler;
namespace Kiri\Router\Base;
class ClosureController extends Controller
{
+1 -1
View File
@@ -1,7 +1,7 @@
<?php
declare(strict_types=1);
namespace Kiri\Message\Handler;
namespace Kiri\Router\Base;
use Kiri;
+9 -10
View File
@@ -1,19 +1,19 @@
<?php
namespace Kiri\Message\Handler;
namespace Kiri\Router\Base;
use Exception;
use Kiri\Message\Handler\Abstracts\Middleware;
use Kiri\Message\ServerRequest;
use Kiri\Router\ServerRequest;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
/**
*
*/
class CoreMiddleware extends Middleware
class CoreMiddleware implements MiddlewareInterface
{
@@ -25,12 +25,11 @@ class CoreMiddleware extends Middleware
*/
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$requestMethod = $request->getAccessControlRequestMethod();
$allowHeaders = $request->getAccessControlAllowHeaders();
$this->response->withAccessControlAllowOrigin('*')->withAccessControlRequestMethod($requestMethod)
->withAccessControlAllowHeaders($allowHeaders);
/** @var ResponseInterface $response */
$response = \Kiri::service()->get('response');
$response->withHeader('Access-Control-Allow-Headers', $request->header('Access-Control-Allow-Headers'))
->withHeader('Access-Control-Request-Method', $request->header('Access-Control-Allow-Origin'))
->withHeader('Access-Control-Allow-Origin', $request->header('Access-Control-Allow-Headers'));
return $handler->handle($request);
}
+1 -3
View File
@@ -1,9 +1,7 @@
<?php
namespace Kiri\Message\Abstracts;
namespace Kiri\Router\Base;
use Kiri\Annotation\Inject;
use Kiri\Events\EventDispatch;
trait EventDispatchHelper
{
+11 -10
View File
@@ -1,12 +1,13 @@
<?php
namespace Kiri\Message;
namespace Kiri\Router\Base;
use Kiri\Message\Constrict\Response;
use Kiri\Message\Constrict\ResponseInterface;
use Kiri\Message\Abstracts\ExceptionHandlerInterface;
use Kiri\Router\ContentType;
use Kiri\Router\Interface\ExceptionHandlerInterface;
use Psr\Http\Message\ResponseInterface;
use Throwable;
use Kiri\Router\Constrict\Stream;
/**
@@ -18,17 +19,17 @@ class ExceptionHandlerDispatcher implements ExceptionHandlerInterface
/**
* @param Throwable $exception
* @param Response $response
* @param object $response
* @return ResponseInterface
*/
public function emit(Throwable $exception, Response $response): ResponseInterface
public function emit(Throwable $exception, object $response): ResponseInterface
{
$response->withContentType(ContentType::HTML);
$response->withContentType(ContentType::HTML)->withBody(new Stream(jTraceEx($exception, null, true)));
if ($exception->getCode() == 404) {
return $response->withBody(new Stream($exception->getMessage()))->withStatus(404);
return $response->withStatus(404);
} else {
return $response->withStatus($exception->getCode() == 0 ? 500 : $exception->getCode());
}
return $response->withBody(new Stream(jTraceEx($exception, null, true)))
->withStatus($exception->getCode() == 0 ? 500 : $exception->getCode());
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
<?php
namespace Kiri\Message\Handler;
namespace Kiri\Router\Base;
use Kiri\Message\Constrict\ResponseInterface;
+40
View File
@@ -2,7 +2,47 @@
namespace Kiri\Router\Base;
use Exception;
use Kiri\Core\HashMap;
use Psr\Http\Server\MiddlewareInterface;
class Middleware
{
public HashMap $map;
public HashMap $routeMap;
/**
*
*/
public function __construct()
{
$this->routeMap = new HashMap();
$this->map = new HashMap();
}
/**
* @param string $path
* @param mixed $middleware
* @return void
* @throws Exception
*/
public function addPathMiddleware(string $path, string $middleware): void
{
if ($this->routeMap->has($path)) {
$values = $this->routeMap->get($path);
if (in_array($middleware, $values)) {
return;
}
if (!in_array(MiddlewareInterface::class, class_implements($middleware))) {
return;
}
}
$this->routeMap->append($path, $middleware);
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
<?php
namespace Kiri\Message\Handler;
namespace Kiri\Router\Base;
use Kiri\Message\Constrict\ResponseInterface;