Move to the Handler naming and namespace the pages.

This commit is contained in:
Dave Smith-Hayes 2025-04-15 21:04:24 -04:00
parent 6336dbb125
commit d3d6d078c4
16 changed files with 82 additions and 77 deletions

45
app/composer.lock generated
View File

@ -4341,26 +4341,29 @@
"packages-dev": [ "packages-dev": [
{ {
"name": "doctrine/deprecations", "name": "doctrine/deprecations",
"version": "1.1.4", "version": "1.1.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/deprecations.git", "url": "https://github.com/doctrine/deprecations.git",
"reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
"reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^7.1 || ^8.0" "php": "^7.1 || ^8.0"
}, },
"conflict": {
"phpunit/phpunit": "<=7.5 || >=13"
},
"require-dev": { "require-dev": {
"doctrine/coding-standard": "^9 || ^12", "doctrine/coding-standard": "^9 || ^12 || ^13",
"phpstan/phpstan": "1.4.10 || 2.0.3", "phpstan/phpstan": "1.4.10 || 2.1.11",
"phpstan/phpstan-phpunit": "^1.0 || ^2", "phpstan/phpstan-phpunit": "^1.0 || ^2",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12",
"psr/log": "^1 || ^2 || ^3" "psr/log": "^1 || ^2 || ^3"
}, },
"suggest": { "suggest": {
@ -4380,9 +4383,9 @@
"homepage": "https://www.doctrine-project.org/", "homepage": "https://www.doctrine-project.org/",
"support": { "support": {
"issues": "https://github.com/doctrine/deprecations/issues", "issues": "https://github.com/doctrine/deprecations/issues",
"source": "https://github.com/doctrine/deprecations/tree/1.1.4" "source": "https://github.com/doctrine/deprecations/tree/1.1.5"
}, },
"time": "2024-12-07T21:18:45+00:00" "time": "2025-04-07T20:06:18+00:00"
}, },
{ {
"name": "doctrine/instantiator", "name": "doctrine/instantiator",
@ -4745,16 +4748,16 @@
}, },
{ {
"name": "phpdocumentor/reflection-docblock", "name": "phpdocumentor/reflection-docblock",
"version": "5.6.1", "version": "5.6.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8" "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/92dde6a5919e34835c506ac8c523ef095a95ed62",
"reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4803,9 +4806,9 @@
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": { "support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.1" "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.2"
}, },
"time": "2024-12-07T09:39:29+00:00" "time": "2025-04-13T19:20:35+00:00"
}, },
{ {
"name": "phpdocumentor/type-resolver", "name": "phpdocumentor/type-resolver",
@ -5362,16 +5365,16 @@
}, },
{ {
"name": "phpunit/phpunit", "name": "phpunit/phpunit",
"version": "11.5.15", "version": "11.5.17",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git", "url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c" "reference": "fd2e863a2995cdfd864fb514b5e0b28b09895b5c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c", "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fd2e863a2995cdfd864fb514b5e0b28b09895b5c",
"reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c", "reference": "fd2e863a2995cdfd864fb514b5e0b28b09895b5c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5443,7 +5446,7 @@
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues", "issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy", "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.15" "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.17"
}, },
"funding": [ "funding": [
{ {
@ -5459,7 +5462,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-03-23T16:02:11+00:00" "time": "2025-04-08T07:59:11+00:00"
}, },
{ {
"name": "sebastian/cli-parser", "name": "sebastian/cli-parser",

View File

@ -1,16 +1,16 @@
<?php <?php
namespace Slovocast\Controller\Channel; namespace Slovocast\Handler\Channel;
use Odan\Session\SessionInterface; use Odan\Session\SessionInterface;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Slovocast\Controller\Controller; use Slovocast\Handler\Handler;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slovocast\Domain\Repository\Channel\ChannelRepositoryInterface; use Slovocast\Domain\Repository\Channel\ChannelRepositoryInterface;
use Slovocast\Domain\Entity\Channel; use Slovocast\Domain\Entity\Channel;
use Slovocast\Domain\Repository\User\UserRepositoryInterface; use Slovocast\Domain\Repository\User\UserRepositoryInterface;
class CreateChannelAction extends Controller class CreateChannelAction extends Handler
{ {
const CREATE_TEMPLATE_PATH = 'channel/create.twig'; const CREATE_TEMPLATE_PATH = 'channel/create.twig';

View File

@ -1,19 +1,19 @@
<?php <?php
namespace Slovocast\Controller\Channel; namespace Slovocast\Handler\Channel;
use Slovocast\Controller\Controller; use Slovocast\Handler\Handler;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Slovocast\Domain\Repository\Channel\ChannelRepositoryInterface; use Slovocast\Domain\Repository\Channel\ChannelRepositoryInterface;
use Slovocast\Domain\Repository\Episode\EpisodeFileRepositoryInterface; use Slovocast\Domain\Repository\Episode\EpisodeFileRepositoryInterface;
class CreateEpisodeAction extends Controller class CreateEpisodeAction extends Handler
{ {
public function __construct( public function __construct(
private EpisodeFileRepositoryInterface $episodeFileRepository, private EpisodeFileRepositoryInterface $episodeFileRepository,
private ChannelRepositoryInterface $channelInterface, private ChannelRepositoryInterface $channelInterface,
) { } ) { }
public function handle(): ResponseInterface public function handle(): ResponseInterface
{ {
$userData = $this->sessionManager->get('user'); $userData = $this->sessionManager->get('user');

View File

@ -1,13 +1,13 @@
<?php <?php
namespace Slovocast\Controller\Channel\Episode; namespace Slovocast\Handler\Channel\Episode;
use Psr\Http\Message\UploadedFileInterface; use Psr\Http\Message\UploadedFileInterface;
use Slovocast\Controller\Controller; use Slovocast\Handler\Handler;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Slovocast\Domain\Repository\Episode\EpisodeFileRepositoryInterface; use Slovocast\Domain\Repository\Episode\EpisodeFileRepositoryInterface;
class UploadEpisodeFileAction extends Controller class UploadEpisodeFileAction extends Handler
{ {
public function __construct( public function __construct(
EpisodeFileRepositoryInterface $episodeFileRepository EpisodeFileRepositoryInterface $episodeFileRepository

View File

@ -1,11 +1,11 @@
<?php <?php
namespace Slovocast\Controller\Channel; namespace Slovocast\Handler\Channel\Page;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slovocast\Controller\Controller; use Slovocast\Handler\Handler;
class CreateChannelPage extends Controller class CreateChannelPage extends Handler
{ {
public function handle(): Response public function handle(): Response
{ {

View File

@ -1,13 +1,13 @@
<?php <?php
namespace Slovocast\Controller; namespace Slovocast\Handler;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Views\Twig; use Slim\Views\Twig;
use Slim\Routing\RouteContext; use Slim\Routing\RouteContext;
abstract class Controller abstract class Handler
{ {
protected Request $request; protected Request $request;
protected Response $response; protected Response $response;

View File

@ -1,16 +1,16 @@
<?php <?php
namespace Slovocast\Controller; namespace Slovocast\Handler;
use Odan\Session\SessionInterface; use Odan\Session\SessionInterface;
use Slovocast\Controller\Controller; use Slovocast\Handler\Handler;
use Slovocast\Infrastructure\Api\Database\DatabaseHandlerInterface; use Slovocast\Infrastructure\Api\Database\DatabaseHandlerInterface;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
class HealthCheck extends Controller class HealthCheck extends Handler
{ {
public function __construct( public function __construct(
protected DatabaseHandlerInterface $database, protected DatabaseHandlerInterface $database,
protected SessionInterface $session protected SessionInterface $session
) { } ) { }

View File

@ -1,15 +1,16 @@
<?php <?php
namespace Slovocast\Controller; namespace Slovocast\Handler\Page;
use Odan\Session\SessionInterface; use Odan\Session\SessionInterface;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Slovocast\Domain\Repository\Channel\ChannelRepositoryInterface; use Slovocast\Domain\Repository\Channel\ChannelRepositoryInterface;
use Slovocast\Domain\Repository\User\UserRepositoryInterface; use Slovocast\Domain\Repository\User\UserRepositoryInterface;
use Psr\Http\Message\ResponseInterface as Response;
use Slovocast\Exception\EntityNotFoundException; use Slovocast\Exception\EntityNotFoundException;
use Slovocast\Handler\Handler;
class DashboardPage extends Controller class DashboardPage extends Handler
{ {
public function __construct( public function __construct(
protected UserRepositoryInterface $userRepository, protected UserRepositoryInterface $userRepository,

View File

@ -1,10 +1,11 @@
<?php <?php
namespace Slovocast\Controller; namespace Slovocast\Handler\Page;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slovocast\Handler\Handler;
class HomePage extends Controller class HomePage extends Handler
{ {
public function handle(): Response public function handle(): Response
{ {

View File

@ -1,16 +1,16 @@
<?php <?php
namespace Slovocast\Controller\User; namespace Slovocast\Handler\User;
use Odan\Session\SessionInterface; use Odan\Session\SessionInterface;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Slovocast\Controller\Controller; use Slovocast\Handler\Handler;
use Slovocast\Domain\Repository\User\UserRepositoryInterface; use Slovocast\Domain\Repository\User\UserRepositoryInterface;
use Slovocast\Exception\EntityNotFoundException; use Slovocast\Exception\EntityNotFoundException;
use Slovocast\Infrastructure\Api\User\UserAuthorizationInterface; use Slovocast\Infrastructure\Api\User\UserAuthorizationInterface;
class LoginUserAction extends Controller class LoginUserAction extends Handler
{ {
public function __construct( public function __construct(
private UserAuthorizationInterface $auth, private UserAuthorizationInterface $auth,

View File

@ -1,13 +1,13 @@
<?php <?php
namespace Slovocast\Controller\User; namespace Slovocast\Handler\User;
use Odan\Session\FlashInterface; use Odan\Session\FlashInterface;
use Slovocast\Controller\Controller; use Slovocast\Handler\Handler;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Odan\Session\SessionInterface; use Odan\Session\SessionInterface;
class LogoutUserAction extends Controller class LogoutUserAction extends Handler
{ {
public function __construct( public function __construct(
protected SessionInterface $session, protected SessionInterface $session,

View File

@ -1,11 +1,11 @@
<?php <?php
namespace Slovocast\Controller\User; namespace Slovocast\Handler\User\Page;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slovocast\Controller\Controller; use Slovocast\Handler\Handler;
class LoginUserPage extends Controller class LoginUserPage extends Handler
{ {
public function handle(): Response public function handle(): Response
{ {

View File

@ -1,12 +1,12 @@
<?php <?php
namespace Slovocast\Controller\User; namespace Slovocast\Handler\User\Page;
use Odan\Session\SessionInterface; use Odan\Session\SessionInterface;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slovocast\Controller\Controller; use Slovocast\Handler\Handler;
class RegisterUserPage extends Controller class RegisterUserPage extends Handler
{ {
public function __construct( public function __construct(
private SessionInterface $session private SessionInterface $session

View File

@ -1,14 +1,14 @@
<?php <?php
namespace Slovocast\Controller\User; namespace Slovocast\Handler\User;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slovocast\Controller\Controller; use Slovocast\Handler\Handler;
use Slovocast\Domain\Entity\User; use Slovocast\Domain\Entity\User;
use Slovocast\Domain\Repository\User\UserRepositoryInterface; use Slovocast\Domain\Repository\User\UserRepositoryInterface;
use Odan\Session\SessionInterface; use Odan\Session\SessionInterface;
class RegisterUserAction extends Controller class RegisterUserAction extends Handler
{ {
public function __construct( public function __construct(
protected UserRepositoryInterface $userRepository, protected UserRepositoryInterface $userRepository,

View File

@ -3,19 +3,19 @@
namespace Slovocast; namespace Slovocast;
use Slim\App; use Slim\App;
use Slovocast\Controller\Channel\CreateChannelAction; use Slovocast\Handler\Channel\CreateChannelAction;
use Slovocast\Controller\Channel\CreateChannelPage; use Slovocast\Handler\Channel\Page\CreateChannelPage;
use Slovocast\Controller\HomePage; use Slovocast\Handler\HealthCheck;
use Slovocast\Controller\HealthCheck; use Slovocast\Handler\Page\DashboardPage;
use Slovocast\Controller\DashboardPage; use Slovocast\Handler\Page\HomePage;
use Slovocast\Controller\User\RegisterUserPage; use Slovocast\Handler\User\LoginUserAction;
use Slovocast\Controller\User\RegisterUserAction; use Slovocast\Handler\User\LogoutUserAction;
use Slovocast\Controller\User\LoginUserPage; use Slovocast\Handler\User\Page\LoginUserPage;
use Slovocast\Controller\User\LoginUserAction; use Slovocast\Handler\User\Page\RegisterUserPage;
use Slovocast\Controller\User\LogoutUserAction; use Slovocast\Handler\User\RegisterUserAction;
use Slovocast\Middleware\AuthenticatedMiddleware;
use Slovocast\Middleware\FormKeyMiddleware; use Slovocast\Middleware\FormKeyMiddleware;
use Slovocast\Middleware\VerifyPasswordMiddleware; use Slovocast\Middleware\VerifyPasswordMiddleware;
use Slovocast\Middleware\AuthenticatedMiddleware;
class Routes class Routes
{ {

View File

@ -3,7 +3,7 @@
namespace Slovocast\Tests\Controller; namespace Slovocast\Tests\Controller;
use Slovocast\Tests\TestCase; use Slovocast\Tests\TestCase;
use Slovocast\Controller\Controller; use Slovocast\Handler\Handler;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Odan\Session\SessionInterface; use Odan\Session\SessionInterface;
@ -11,7 +11,7 @@ class ControllerTest extends TestCase
{ {
public function testHtmlInlineResponse(): void public function testHtmlInlineResponse(): void
{ {
$testController = new class extends Controller { $testController = new class extends Handler {
public function handle(): Response public function handle(): Response
{ {
return $this->renderInline( return $this->renderInline(
@ -32,7 +32,7 @@ class ControllerTest extends TestCase
public function testHtmlInlineResponseCodes(): void public function testHtmlInlineResponseCodes(): void
{ {
$testController = new class extends Controller { $testController = new class extends Handler {
public function handle(): Response public function handle(): Response
{ {
$response = $this->renderInline( $response = $this->renderInline(
@ -57,7 +57,7 @@ class ControllerTest extends TestCase
public function testJsonResponse(): void public function testJsonResponse(): void
{ {
$testController = new class extends Controller { $testController = new class extends Handler {
public function handle(): Response public function handle(): Response
{ {
return $this->json([ 'data' => 'hello' ]); return $this->json([ 'data' => 'hello' ]);
@ -83,7 +83,7 @@ class ControllerTest extends TestCase
*/ */
public function testRenderSiteName(): void public function testRenderSiteName(): void
{ {
$testController = new class extends Controller { $testController = new class extends Handler {
public function handle(): Response public function handle(): Response
{ {
return $this->renderInline("<h1>{{ site_name }}</h1>"); return $this->renderInline("<h1>{{ site_name }}</h1>");
@ -104,7 +104,7 @@ class ControllerTest extends TestCase
$app = $this->getAppInstance(); $app = $this->getAppInstance();
$session = $app->getContainer()->get(SessionInterface::class); $session = $app->getContainer()->get(SessionInterface::class);
$testController = new class($session) extends Controller { $testController = new class($session) extends Handler {
protected SessionInterface $session; protected SessionInterface $session;
public function __construct(SessionInterface $session) public function __construct(SessionInterface $session)