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": [
{
"name": "doctrine/deprecations",
"version": "1.1.4",
"version": "1.1.5",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
"reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9"
"reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9",
"reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9",
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
"reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"conflict": {
"phpunit/phpunit": "<=7.5 || >=13"
},
"require-dev": {
"doctrine/coding-standard": "^9 || ^12",
"phpstan/phpstan": "1.4.10 || 2.0.3",
"doctrine/coding-standard": "^9 || ^12 || ^13",
"phpstan/phpstan": "1.4.10 || 2.1.11",
"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"
},
"suggest": {
@ -4380,9 +4383,9 @@
"homepage": "https://www.doctrine-project.org/",
"support": {
"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",
@ -4745,16 +4748,16 @@
},
{
"name": "phpdocumentor/reflection-docblock",
"version": "5.6.1",
"version": "5.6.2",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8"
"reference": "92dde6a5919e34835c506ac8c523ef095a95ed62"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8",
"reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/92dde6a5919e34835c506ac8c523ef095a95ed62",
"reference": "92dde6a5919e34835c506ac8c523ef095a95ed62",
"shasum": ""
},
"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.",
"support": {
"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",
@ -5362,16 +5365,16 @@
},
{
"name": "phpunit/phpunit",
"version": "11.5.15",
"version": "11.5.17",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c"
"reference": "fd2e863a2995cdfd864fb514b5e0b28b09895b5c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c",
"reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fd2e863a2995cdfd864fb514b5e0b28b09895b5c",
"reference": "fd2e863a2995cdfd864fb514b5e0b28b09895b5c",
"shasum": ""
},
"require": {
@ -5443,7 +5446,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"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": [
{
@ -5459,7 +5462,7 @@
"type": "tidelift"
}
],
"time": "2025-03-23T16:02:11+00:00"
"time": "2025-04-08T07:59:11+00:00"
},
{
"name": "sebastian/cli-parser",

View File

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

View File

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

View File

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

View File

@ -1,11 +1,11 @@
<?php
namespace Slovocast\Controller\Channel;
namespace Slovocast\Handler\Channel\Page;
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
{

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,11 +1,11 @@
<?php
namespace Slovocast\Controller\User;
namespace Slovocast\Handler\User\Page;
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
{

View File

@ -1,12 +1,12 @@
<?php
namespace Slovocast\Controller\User;
namespace Slovocast\Handler\User\Page;
use Odan\Session\SessionInterface;
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(
private SessionInterface $session

View File

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

View File

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

View File

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