Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5bda66b40d | |||
| e82fad2fcb | |||
| 16eb6b11c5 | |||
| 227b6fa512 | |||
| c06ab29054 | |||
| 3ccf08fdfb | |||
| 292ccc84de | |||
| edc7371d9b |
+8
-18
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Kiri\Router;
|
namespace Kiri\Router;
|
||||||
|
|
||||||
|
use Kiri\Abstracts\CoordinatorManager;
|
||||||
|
use Kiri\Coordinator;
|
||||||
use Kiri\Di\Inject\Container;
|
use Kiri\Di\Inject\Container;
|
||||||
use Kiri\Di\Context;
|
use Kiri\Di\Context;
|
||||||
use Kiri\Di\Interface\ResponseEmitterInterface;
|
use Kiri\Di\Interface\ResponseEmitterInterface;
|
||||||
@@ -73,12 +75,14 @@ class OnRequest implements OnRequestInterface
|
|||||||
*/
|
*/
|
||||||
public function onRequest(Request $request, Response $response): void
|
public function onRequest(Request $request, Response $response): void
|
||||||
{
|
{
|
||||||
/** @var CQ $PsrRequest */
|
|
||||||
try {
|
try {
|
||||||
$PsrRequest = $this->initRequestAndResponse($request);
|
/** @var CQ $PsrRequest */
|
||||||
|
Context::set(ResponseInterface::class, new ConstrictResponse($this->response->contentType));
|
||||||
|
$PsrRequest = Context::set(RequestInterface::class, CQ::builder($request));
|
||||||
|
|
||||||
$PsrResponse = $this->router->query($request->server['path_info'], $request->getMethod())
|
CoordinatorManager::utility(Coordinator::WORKER_START)->yield();
|
||||||
->run($PsrRequest);
|
|
||||||
|
$PsrResponse = $this->router->query($request->server['path_info'], $request->getMethod())->run($PsrRequest);
|
||||||
} catch (Throwable $throwable) {
|
} catch (Throwable $throwable) {
|
||||||
$PsrResponse = $this->exception->emit($throwable, $this->constrictResponse);
|
$PsrResponse = $this->exception->emit($throwable, $this->constrictResponse);
|
||||||
} finally {
|
} finally {
|
||||||
@@ -86,18 +90,4 @@ class OnRequest implements OnRequestInterface
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
* @return ServerRequestInterface
|
|
||||||
*/
|
|
||||||
public function initRequestAndResponse(Request $request): ServerRequestInterface
|
|
||||||
{
|
|
||||||
$response = new ConstrictResponse($this->response->contentType);
|
|
||||||
|
|
||||||
Context::set(ResponseInterface::class, $response);
|
|
||||||
|
|
||||||
return Context::set(RequestInterface::class, CQ::builder($request));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-2
@@ -4,7 +4,10 @@ declare(strict_types=1);
|
|||||||
namespace Kiri\Router;
|
namespace Kiri\Router;
|
||||||
|
|
||||||
use Closure;
|
use Closure;
|
||||||
|
use Kiri\Server\Events\OnWorkerStart;
|
||||||
use Kiri;
|
use Kiri;
|
||||||
|
use Kiri\Abstracts\CoordinatorManager;
|
||||||
|
use Kiri\Coordinator;
|
||||||
use Kiri\Router\Validator\ValidatorMiddleware;
|
use Kiri\Router\Validator\ValidatorMiddleware;
|
||||||
use Kiri\Router\Base\Middleware as MiddlewareManager;
|
use Kiri\Router\Base\Middleware as MiddlewareManager;
|
||||||
use Kiri\Router\Constrict\RequestMethod;
|
use Kiri\Router\Constrict\RequestMethod;
|
||||||
@@ -174,12 +177,16 @@ class Router
|
|||||||
*/
|
*/
|
||||||
public function scan_build_route(): void
|
public function scan_build_route(): void
|
||||||
{
|
{
|
||||||
|
$coordinator = CoordinatorManager::utility(Coordinator::WORKER_START);
|
||||||
|
|
||||||
$this->read_dir_file(APP_PATH . 'routes');
|
$this->read_dir_file(APP_PATH . 'routes');
|
||||||
|
|
||||||
$container = Kiri::getDi();
|
$container = Kiri::getDi();
|
||||||
$scanner = di(Kiri\Di\Scanner::class);
|
$scanner = $container->get(Kiri\Di\Scanner::class);
|
||||||
$scanner->load_directory(APP_PATH . 'app/Controller');
|
$scanner->load_directory(APP_PATH . 'app/Controller');
|
||||||
$this->reset($container);
|
$this->reset($container);
|
||||||
|
|
||||||
|
$coordinator->done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -190,7 +197,7 @@ class Router
|
|||||||
*/
|
*/
|
||||||
public function reset(ContainerInterface $container): void
|
public function reset(ContainerInterface $container): void
|
||||||
{
|
{
|
||||||
$router = $container->get(DataGrip::class)->get(static::$type);
|
$router = $container->get(DataGrip::class)->get(static::$type);
|
||||||
foreach ($router->getMethods() as $name => $method) {
|
foreach ($router->getMethods() as $name => $method) {
|
||||||
$middlewares = MiddlewareManager::get($method->getClass(), $method->getMethod());
|
$middlewares = MiddlewareManager::get($method->getClass(), $method->getMethod());
|
||||||
$validator = MiddlewareManager::getValidator($method->getClass(), $method->getMethod());
|
$validator = MiddlewareManager::getValidator($method->getClass(), $method->getMethod());
|
||||||
|
|||||||
Reference in New Issue
Block a user