- Fixed a bug where Assets would not load properly
This commit is contained in:
parent
d181c6d3a7
commit
2dbcfbcb2e
@ -52,7 +52,8 @@ return [
|
|||||||
return $adapter;
|
return $adapter;
|
||||||
},
|
},
|
||||||
|
|
||||||
\Lean\Api\Factory\MessageFactoryInterface::class => DI\autowire(\Lean\Api\Lib\Message::class),
|
Lean\ApplicationStrategy\NotFoundDecoratorInterface::class => DI\autowire(Lean\Api\ApplicationStrategy\NotFoundDecorator::class),
|
||||||
\League\Route\Strategy\ApplicationStrategy::class => DI\autowire(\Lean\Api\ApplicationStrategy::class),
|
Lean\Api\Factory\MessageFactoryInterface::class => DI\autowire(Lean\Api\Lib\Message::class),
|
||||||
\Lean\Api\Factory\DebugFormFactoryInterface::class => DI\autowire(\Lean\Api\Factory\DebugFormFactory::class),
|
Lean\Api\Factory\DebugFormFactoryInterface::class => DI\autowire(Lean\Api\Factory\DebugFormFactory::class),
|
||||||
|
# League\Route\Strategy\ApplicationStrategy::class => DI\autowire(Lean\Api\ApplicationStrategy::class),
|
||||||
];
|
];
|
@ -5,6 +5,8 @@ namespace Lean\Api;
|
|||||||
use League\Route\Strategy;
|
use League\Route\Strategy;
|
||||||
|
|
||||||
use League\Route\Http\Exception\NotFoundException;
|
use League\Route\Http\Exception\NotFoundException;
|
||||||
|
use Lean\ApplicationStrategy\NotFoundDecoratorInterface;
|
||||||
|
use Lean\ApplicationStrategy\ThrowableHandler;
|
||||||
use Lean\Factory\HttpFactoryInterface;
|
use Lean\Factory\HttpFactoryInterface;
|
||||||
use Picea\Asset\Asset;
|
use Picea\Asset\Asset;
|
||||||
use Psr\Container\ContainerInterface;
|
use Psr\Container\ContainerInterface;
|
||||||
@ -15,58 +17,10 @@ use Picea\Picea;
|
|||||||
use Psr\Http\Server\RequestHandlerInterface;
|
use Psr\Http\Server\RequestHandlerInterface;
|
||||||
use function DI\get;
|
use function DI\get;
|
||||||
|
|
||||||
class ApplicationStrategy extends Strategy\ApplicationStrategy {
|
class ApplicationStrategy extends \Lean\ApplicationStrategy {
|
||||||
|
|
||||||
public function __construct(
|
|
||||||
protected HttpFactoryInterface $httpFactory,
|
|
||||||
ContainerInterface $di,
|
|
||||||
) {
|
|
||||||
$this->container = $di;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getThrowableHandler(): MiddlewareInterface
|
|
||||||
{
|
|
||||||
return new class implements MiddlewareInterface
|
|
||||||
{
|
|
||||||
public function process(
|
|
||||||
ServerRequestInterface $request,
|
|
||||||
RequestHandlerInterface $handler
|
|
||||||
): ResponseInterface {
|
|
||||||
try {
|
|
||||||
return $handler->handle($request);
|
|
||||||
} catch (\Throwable $ex) {
|
|
||||||
echo sprintf("%s in <strong>%s</strong> <pre>%s</pre>", $ex->getMessage(), $ex->getFile() . ":" . $ex->getLine(), $ex->getTraceAsString());
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getNotFoundDecorator(NotFoundException $exception): MiddlewareInterface
|
public function getNotFoundDecorator(NotFoundException $exception): MiddlewareInterface
|
||||||
{
|
{
|
||||||
return new class($this->httpFactory) implements MiddlewareInterface {
|
return $this->getContainer()->get(NotFoundDecoratorInterface::class);
|
||||||
|
|
||||||
public function __construct(
|
|
||||||
protected HttpFactoryInterface $httpFactory,
|
|
||||||
) {}
|
|
||||||
|
|
||||||
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
|
||||||
{
|
|
||||||
if (php_sapi_name() !== 'cli' and ! defined('STDIN')) {
|
|
||||||
return $this->throw404($request);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $handler->handle($request);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function throw404(ServerRequestInterface $request) : ResponseInterface
|
|
||||||
{
|
|
||||||
return $this->httpFactory->createJsonResponse([
|
|
||||||
'status' => 'error',
|
|
||||||
'message' => "Not Found",
|
|
||||||
'ts' => time(),
|
|
||||||
], 404);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
33
src/ApplicationStrategy/NotFoundDecorator.php
Normal file
33
src/ApplicationStrategy/NotFoundDecorator.php
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Lean\Api\ApplicationStrategy;
|
||||||
|
|
||||||
|
use DI\Attribute\Inject;
|
||||||
|
use Lean\Factory\HttpFactoryInterface;
|
||||||
|
use Picea\Picea;
|
||||||
|
use Psr\Container\ContainerInterface;
|
||||||
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
|
use Psr\Http\Server\MiddlewareInterface;
|
||||||
|
use Psr\Http\Server\RequestHandlerInterface;
|
||||||
|
|
||||||
|
class NotFoundDecorator extends \Lean\ApplicationStrategy\NotFoundDecorator
|
||||||
|
{
|
||||||
|
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
||||||
|
{
|
||||||
|
if (php_sapi_name() !== 'cli' and ! defined('STDIN')) {
|
||||||
|
return $this->throw404($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::process($request, $handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function throw404(ServerRequestInterface $request) : ResponseInterface
|
||||||
|
{
|
||||||
|
return $this->checkAssetTrigger($request) ?: $this->httpFactory->createJsonResponse([
|
||||||
|
'status' => 'error',
|
||||||
|
'message' => "Not Found",
|
||||||
|
'ts' => time(),
|
||||||
|
], 404);
|
||||||
|
}
|
||||||
|
}
|
23
src/ApplicationStrategy/ThrowableHandler.php
Normal file
23
src/ApplicationStrategy/ThrowableHandler.php
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Lean\Api\ApplicationStrategy;
|
||||||
|
|
||||||
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
|
use Psr\Http\Server\MiddlewareInterface;
|
||||||
|
use Psr\Http\Server\RequestHandlerInterface;
|
||||||
|
|
||||||
|
class ThrowableHandler extends \Lean\ApplicationStrategy\ThrowableHandler
|
||||||
|
{
|
||||||
|
public function process(
|
||||||
|
ServerRequestInterface $request,
|
||||||
|
RequestHandlerInterface $handler
|
||||||
|
): ResponseInterface {
|
||||||
|
try {
|
||||||
|
return $handler->handle($request);
|
||||||
|
} catch (\Throwable $ex) {
|
||||||
|
echo sprintf("%s in <strong>%s</strong> <pre>%s</pre>", $ex->getMessage(), $ex->getFile() . ":" . $ex->getLine(), $ex->getTraceAsString());
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -24,7 +24,7 @@ class ApiRenderer implements MiddlewareInterface {
|
|||||||
$response = $handler->handle($request);
|
$response = $handler->handle($request);
|
||||||
}
|
}
|
||||||
catch(\Throwable $ex) {
|
catch(\Throwable $ex) {
|
||||||
$errorId = $this->saveError($request, $ex)->id;
|
# $errorId = $this->saveError($request, $ex)->id;
|
||||||
|
|
||||||
if ($this->awaitingJson($request)) {
|
if ($this->awaitingJson($request)) {
|
||||||
return HttpFactory::createJsonResponse([
|
return HttpFactory::createJsonResponse([
|
||||||
|
Loading…
x
Reference in New Issue
Block a user