- Done fixing Container build caching and WIP on Picea's asset

This commit is contained in:
mcndave committed 2023-10-17 20:10:42 -04:00
1 parent 4dcc7f407e
commit 4c0cddd617
10 files changed
+208 -79

No files matched your search

+20 -10
View File
@@ -5,34 +5,36 @@ namespace Lean;
use League\Route\Strategy;
use League\Route\Http\Exception\NotFoundException;
use Picea\Asset\Asset;
use Psr\Container\ContainerInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Picea\Picea;
use Psr\Http\Server\RequestHandlerInterface;
use function DI\get;
class ApplicationStrategy extends Strategy\ApplicationStrategy {
static array $asset_ext = [
public const ASSET_TRIGGER_UPDATE = [
"js", "mjs", "manifest", "webmanifest", "css", "png", "ico",
"jpg", "jpeg", "gif", "webp", "woff", "woff2", "eot", "svg",
"ttf"
];
public function __construct(
public Picea $picea
protected Picea $picea,
protected ContainerInterface $di,
) {}
public function getNotFoundDecorator(NotFoundException $exception): MiddlewareInterface
{
return new class($this->picea) implements MiddlewareInterface {
return new class($this->picea, $this->di) implements MiddlewareInterface {
protected Picea $picea;
public function __construct(Picea $picea)
{
$this->picea = $picea;
}
public function __construct(
protected Picea $picea,
protected ContainerInterface $di,
) { }
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
@@ -41,8 +43,16 @@ class ApplicationStrategy extends Strategy\ApplicationStrategy {
public function throw404(ServerRequestInterface $request) : ResponseInterface
{
if ( class_exists(\Picea\Asset\Asset::class) ) {
if ( getenv('DEBUG') && class_exists(\Picea\Asset\Asset::class) ) {
$params = $request->getServerParams();
$scpName = basename(explode('?', $params['SCRIPT_NAME'] ?? $params['REQUEST_URI'] ?? $params['PHP_SELF'] ?? "", 1)[0]);
list(, $ext) = array_pad(explode('.', $scpName), 2, null);
if ($ext && in_array($ext, ApplicationStrategy::ASSET_TRIGGER_UPDATE)) {
$this->di->get(\Picea\Asset\Asset::class)->launchInstall();
}
}
return new \Laminas\Diactoros\Response\HtmlResponse($this->picea->renderHtml("lean/error/404", [], $this), 404);