2018-09-21 14:04:05 +02:00
|
|
|
<?php
|
2020-02-06 03:35:13 +01:00
|
|
|
|
2023-06-08 12:38:43 +02:00
|
|
|
declare(strict_types=1);
|
|
|
|
|
2022-11-13 23:55:20 +01:00
|
|
|
use App\CallableEventDispatcherInterface;
|
2020-12-03 05:18:06 +01:00
|
|
|
use App\Environment;
|
2020-02-06 03:35:13 +01:00
|
|
|
use App\Event;
|
|
|
|
use App\Middleware;
|
|
|
|
|
2022-11-13 23:55:20 +01:00
|
|
|
return static function (CallableEventDispatcherInterface $dispatcher) {
|
2020-12-06 08:55:25 +01:00
|
|
|
$dispatcher->addListener(
|
|
|
|
Event\BuildConsoleCommands::class,
|
2024-05-17 18:50:39 +02:00
|
|
|
function (Event\BuildConsoleCommands $event) {
|
2021-12-23 02:32:40 +01:00
|
|
|
call_user_func(include(__DIR__ . '/cli.php'), $event);
|
2019-03-27 02:43:32 +01:00
|
|
|
}
|
2020-12-06 08:55:25 +01:00
|
|
|
);
|
2019-03-27 02:43:32 +01:00
|
|
|
|
2020-12-06 08:55:25 +01:00
|
|
|
$dispatcher->addListener(
|
|
|
|
Event\BuildRoutes::class,
|
|
|
|
function (Event\BuildRoutes $event) {
|
|
|
|
$app = $event->getApp();
|
2020-08-10 09:46:09 +02:00
|
|
|
|
2020-12-06 08:55:25 +01:00
|
|
|
// Load app-specific route configuration.
|
2022-11-16 08:46:16 +01:00
|
|
|
$container = $event->getContainer();
|
2018-09-22 13:52:43 +02:00
|
|
|
|
2020-12-06 08:55:25 +01:00
|
|
|
/** @var Environment $environment */
|
|
|
|
$environment = $container->get(Environment::class);
|
2020-02-06 03:35:13 +01:00
|
|
|
|
2020-12-06 08:55:25 +01:00
|
|
|
call_user_func(include(__DIR__ . '/routes.php'), $app);
|
2020-06-26 22:22:53 +02:00
|
|
|
|
2020-12-06 08:55:25 +01:00
|
|
|
if (file_exists(__DIR__ . '/routes.dev.php')) {
|
|
|
|
call_user_func(include(__DIR__ . '/routes.dev.php'), $app);
|
|
|
|
}
|
2020-02-06 03:35:13 +01:00
|
|
|
|
2020-12-06 08:55:25 +01:00
|
|
|
$app->add(Middleware\WrapExceptionsWithRequestData::class);
|
2020-02-06 03:35:13 +01:00
|
|
|
|
2020-12-06 08:55:25 +01:00
|
|
|
$app->add(Middleware\EnforceSecurity::class);
|
2020-08-10 09:46:09 +02:00
|
|
|
|
2020-12-06 08:55:25 +01:00
|
|
|
// Request injection middlewares.
|
|
|
|
$app->add(Middleware\InjectRouter::class);
|
|
|
|
$app->add(Middleware\InjectRateLimit::class);
|
|
|
|
|
|
|
|
// Re-establish database connection if multiple requests are handled by the same stack.
|
|
|
|
$app->add(Middleware\ReopenEntityManagerMiddleware::class);
|
|
|
|
|
|
|
|
// System middleware for routing and body parsing.
|
|
|
|
$app->addBodyParsingMiddleware();
|
|
|
|
$app->addRoutingMiddleware();
|
|
|
|
|
|
|
|
// Redirects and updates that should happen before system middleware.
|
2023-12-28 21:07:55 +01:00
|
|
|
$app->add(new Middleware\Cache\SetDefaultCache());
|
2022-11-16 08:46:16 +01:00
|
|
|
$app->add(new Middleware\RemoveSlashes());
|
|
|
|
$app->add(new Middleware\ApplyXForwardedProto());
|
2020-12-06 08:55:25 +01:00
|
|
|
|
|
|
|
// Add an error handler for most in-controller/task situations.
|
|
|
|
$errorMiddleware = $app->addErrorMiddleware(
|
2022-03-26 03:36:49 +01:00
|
|
|
$environment->showDetailedErrors(),
|
2020-12-06 08:55:25 +01:00
|
|
|
true,
|
|
|
|
true,
|
|
|
|
$container->get(Psr\Log\LoggerInterface::class)
|
|
|
|
);
|
|
|
|
$errorMiddleware->setDefaultErrorHandler(Slim\Interfaces\ErrorHandlerInterface::class);
|
|
|
|
}
|
|
|
|
);
|
2018-09-21 14:04:05 +02:00
|
|
|
|
2019-02-24 06:28:01 +01:00
|
|
|
// Build default menus
|
2022-01-04 23:46:49 +01:00
|
|
|
$dispatcher->addListener(
|
|
|
|
App\Event\GetSyncTasks::class,
|
|
|
|
function (App\Event\GetSyncTasks $e) {
|
|
|
|
$e->addTasks([
|
|
|
|
App\Sync\Task\CheckFolderPlaylistsTask::class,
|
|
|
|
App\Sync\Task\CheckMediaTask::class,
|
2024-03-03 23:21:52 +01:00
|
|
|
App\Sync\Task\CheckPodcastPlaylistsTask::class,
|
2022-01-04 23:46:49 +01:00
|
|
|
App\Sync\Task\CheckRequestsTask::class,
|
|
|
|
App\Sync\Task\CheckUpdatesTask::class,
|
|
|
|
App\Sync\Task\CleanupHistoryTask::class,
|
|
|
|
App\Sync\Task\CleanupLoginTokensTask::class,
|
|
|
|
App\Sync\Task\CleanupRelaysTask::class,
|
|
|
|
App\Sync\Task\CleanupStorageTask::class,
|
2022-05-28 12:20:11 +02:00
|
|
|
App\Sync\Task\EnforceBroadcastTimesTask::class,
|
2022-01-04 23:46:49 +01:00
|
|
|
App\Sync\Task\MoveBroadcastsTask::class,
|
2022-05-16 00:07:48 +02:00
|
|
|
App\Sync\Task\QueueInterruptingTracks::class,
|
2022-01-04 23:46:49 +01:00
|
|
|
App\Sync\Task\ReactivateStreamerTask::class,
|
2022-06-09 09:27:19 +02:00
|
|
|
App\Sync\Task\RenewAcmeCertTask::class,
|
2022-01-04 23:46:49 +01:00
|
|
|
App\Sync\Task\RotateLogsTask::class,
|
|
|
|
App\Sync\Task\RunAnalyticsTask::class,
|
|
|
|
App\Sync\Task\RunBackupTask::class,
|
|
|
|
App\Sync\Task\UpdateGeoLiteTask::class,
|
|
|
|
App\Sync\Task\UpdateStorageLocationSizesTask::class,
|
|
|
|
]);
|
|
|
|
}
|
2020-11-12 22:30:02 +01:00
|
|
|
);
|
|
|
|
|
2022-01-04 23:46:49 +01:00
|
|
|
// Other event subscribers from across the application.
|
2022-01-14 11:19:55 +01:00
|
|
|
$dispatcher->addCallableListener(
|
|
|
|
Event\GetNotifications::class,
|
|
|
|
App\Notification\Check\BaseUrlCheck::class
|
|
|
|
);
|
2020-11-12 22:30:02 +01:00
|
|
|
$dispatcher->addCallableListener(
|
|
|
|
Event\GetNotifications::class,
|
|
|
|
App\Notification\Check\UpdateCheck::class
|
|
|
|
);
|
|
|
|
$dispatcher->addCallableListener(
|
|
|
|
Event\GetNotifications::class,
|
|
|
|
App\Notification\Check\RecentBackupCheck::class
|
|
|
|
);
|
|
|
|
$dispatcher->addCallableListener(
|
|
|
|
Event\GetNotifications::class,
|
|
|
|
App\Notification\Check\SyncTaskCheck::class
|
|
|
|
);
|
2021-04-18 07:03:22 +02:00
|
|
|
$dispatcher->addCallableListener(
|
|
|
|
Event\GetNotifications::class,
|
|
|
|
App\Notification\Check\ProfilerAdvisorCheck::class
|
|
|
|
);
|
2023-11-07 16:44:59 +01:00
|
|
|
$dispatcher->addCallableListener(
|
|
|
|
Event\GetNotifications::class,
|
|
|
|
App\Notification\Check\DonateAdvisorCheck::class
|
|
|
|
);
|
2022-11-01 19:24:07 +01:00
|
|
|
$dispatcher->addCallableListener(
|
|
|
|
Event\GetNotifications::class,
|
|
|
|
App\Notification\Check\ServiceCheck::class
|
|
|
|
);
|
2020-11-12 22:30:02 +01:00
|
|
|
|
2021-01-19 06:44:15 +01:00
|
|
|
$dispatcher->addCallableListener(
|
|
|
|
Event\Media\GetAlbumArt::class,
|
|
|
|
App\Media\AlbumArtHandler\LastFmAlbumArtHandler::class,
|
2022-11-13 23:55:20 +01:00
|
|
|
priority: 10
|
2021-01-19 06:44:15 +01:00
|
|
|
);
|
|
|
|
$dispatcher->addCallableListener(
|
|
|
|
Event\Media\GetAlbumArt::class,
|
|
|
|
App\Media\AlbumArtHandler\MusicBrainzAlbumArtHandler::class,
|
2022-11-13 23:55:20 +01:00
|
|
|
priority: -10
|
2021-01-19 06:44:15 +01:00
|
|
|
);
|
|
|
|
|
2022-05-12 19:40:35 +02:00
|
|
|
$dispatcher->addCallableListener(
|
|
|
|
Event\Media\ReadMetadata::class,
|
2022-11-20 05:16:03 +01:00
|
|
|
App\Media\Metadata\Reader\PhpReader::class,
|
|
|
|
);
|
|
|
|
$dispatcher->addCallableListener(
|
|
|
|
Event\Media\ReadMetadata::class,
|
|
|
|
App\Media\Metadata\Reader\FfprobeReader::class,
|
|
|
|
priority: -10
|
2022-05-12 19:40:35 +02:00
|
|
|
);
|
|
|
|
$dispatcher->addCallableListener(
|
|
|
|
Event\Media\WriteMetadata::class,
|
|
|
|
App\Media\Metadata\Writer::class
|
|
|
|
);
|
|
|
|
|
2020-12-19 06:07:28 +01:00
|
|
|
$dispatcher->addServiceSubscriber(
|
|
|
|
[
|
|
|
|
App\Console\ErrorHandler::class,
|
2022-05-29 02:30:12 +02:00
|
|
|
App\Nginx\ConfigWriter::class,
|
2022-05-16 00:07:48 +02:00
|
|
|
App\Radio\AutoDJ\QueueBuilder::class,
|
2020-12-19 06:07:28 +01:00
|
|
|
App\Radio\AutoDJ\Annotations::class,
|
|
|
|
App\Radio\Backend\Liquidsoap\ConfigWriter::class,
|
2022-04-13 10:29:50 +02:00
|
|
|
App\Radio\Backend\Liquidsoap\PlaylistFileWriter::class,
|
2022-01-04 23:46:49 +01:00
|
|
|
App\Sync\NowPlaying\Task\NowPlayingTask::class,
|
2020-12-19 06:07:28 +01:00
|
|
|
]
|
|
|
|
);
|
2018-09-21 14:04:05 +02:00
|
|
|
};
|