2020-04-08 04:19:24 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
use App\Controller;
|
2022-06-30 04:38:46 +00:00
|
|
|
use App\Enums\StationFeatures;
|
2022-01-07 08:26:40 +00:00
|
|
|
use App\Enums\StationPermissions;
|
2020-04-08 04:19:24 +00:00
|
|
|
use App\Http\Response;
|
|
|
|
use App\Http\ServerRequest;
|
|
|
|
use App\Middleware;
|
|
|
|
use Slim\Routing\RouteCollectorProxy;
|
|
|
|
|
2021-08-27 23:45:25 +00:00
|
|
|
return static function (RouteCollectorProxy $app) {
|
2020-12-22 21:40:33 +00:00
|
|
|
$app->group(
|
|
|
|
'/station/{station_id}',
|
|
|
|
function (RouteCollectorProxy $group) {
|
|
|
|
$group->get(
|
|
|
|
'',
|
2022-05-22 07:39:00 +00:00
|
|
|
function (ServerRequest $request, Response $response, ...$params) {
|
2020-12-22 21:40:33 +00:00
|
|
|
return $response->withRedirect(
|
2022-11-06 20:42:50 +00:00
|
|
|
$request->getRouter()->fromHere('stations:profile:index')
|
2020-12-22 21:40:33 +00:00
|
|
|
);
|
|
|
|
}
|
|
|
|
)->setName('stations:index:index');
|
|
|
|
|
2023-01-03 22:55:49 +00:00
|
|
|
$group->get('/branding', Controller\Stations\BrandingAction::class)
|
|
|
|
->setName('stations:branding')
|
|
|
|
->add(new Middleware\Permissions(StationPermissions::Profile, true));
|
|
|
|
|
2022-05-19 05:37:40 +00:00
|
|
|
$group->get('/bulk-media', Controller\Stations\BulkMediaAction::class)
|
|
|
|
->setName('stations:bulk-media')
|
|
|
|
->add(new Middleware\Permissions(StationPermissions::Media, true));
|
|
|
|
|
2022-02-28 02:16:48 +00:00
|
|
|
$group->get('/fallback', Controller\Stations\FallbackAction::class)
|
|
|
|
->setName('stations:fallback')
|
|
|
|
->add(new Middleware\Permissions(StationPermissions::Broadcasting, true));
|
|
|
|
|
2021-02-09 19:57:25 +00:00
|
|
|
$group->get('/files', Controller\Stations\FilesAction::class)
|
2020-12-22 21:40:33 +00:00
|
|
|
->setName('stations:files:index')
|
2022-06-30 04:38:46 +00:00
|
|
|
->add(new Middleware\StationSupportsFeature(StationFeatures::Media))
|
2022-01-07 08:26:40 +00:00
|
|
|
->add(new Middleware\Permissions(StationPermissions::Media, true));
|
2020-12-22 21:40:33 +00:00
|
|
|
|
2022-06-04 03:39:02 +00:00
|
|
|
$group->get('/hls_streams', Controller\Stations\HlsStreamsAction::class)
|
|
|
|
->setName('stations:hls_streams:index')
|
2022-06-30 04:38:46 +00:00
|
|
|
->add(new Middleware\StationSupportsFeature(StationFeatures::HlsStreams))
|
2022-06-04 03:39:02 +00:00
|
|
|
->add(new Middleware\Permissions(StationPermissions::MountPoints, true));
|
|
|
|
|
2021-11-05 06:13:32 +00:00
|
|
|
$group->get('/ls_config', Controller\Stations\EditLiquidsoapConfigAction::class)
|
2020-12-22 21:40:33 +00:00
|
|
|
->setName('stations:util:ls_config')
|
2022-06-30 04:38:46 +00:00
|
|
|
->add(new Middleware\StationSupportsFeature(StationFeatures::CustomLiquidsoapConfig))
|
2022-01-07 08:26:40 +00:00
|
|
|
->add(new Middleware\Permissions(StationPermissions::Broadcasting, true));
|
2020-12-22 21:40:33 +00:00
|
|
|
|
2022-05-23 04:50:55 +00:00
|
|
|
$group->get('/stereo_tool_config', Controller\Stations\UploadStereoToolConfigAction::class)
|
|
|
|
->setName('stations:stereo_tool_config')
|
|
|
|
->add(new Middleware\Permissions(StationPermissions::Broadcasting, true));
|
|
|
|
|
2022-07-02 22:08:43 +00:00
|
|
|
$group->get('/logs', Controller\Stations\LogsAction::class)
|
|
|
|
->setName('stations:logs')
|
2022-06-19 22:28:31 +00:00
|
|
|
->add(new Middleware\Permissions(StationPermissions::Logs, true));
|
2020-12-22 21:40:33 +00:00
|
|
|
|
2021-02-09 19:57:25 +00:00
|
|
|
$group->get('/playlists', Controller\Stations\PlaylistsAction::class)
|
2020-12-22 21:40:33 +00:00
|
|
|
->setName('stations:playlists:index')
|
2022-06-30 04:38:46 +00:00
|
|
|
->add(new Middleware\StationSupportsFeature(StationFeatures::Media))
|
2022-01-07 08:26:40 +00:00
|
|
|
->add(new Middleware\Permissions(StationPermissions::Media, true));
|
2020-12-22 21:40:33 +00:00
|
|
|
|
2021-05-25 04:29:07 +00:00
|
|
|
$group->get('/podcasts', Controller\Stations\PodcastsAction::class)
|
|
|
|
->setName('stations:podcasts:index')
|
2022-06-30 04:38:46 +00:00
|
|
|
->add(new Middleware\StationSupportsFeature(StationFeatures::Podcasts))
|
2022-01-07 08:26:40 +00:00
|
|
|
->add(new Middleware\Permissions(StationPermissions::Podcasts, true));
|
2021-05-25 04:29:07 +00:00
|
|
|
|
2021-06-12 07:04:27 +00:00
|
|
|
$group->get('/mounts', Controller\Stations\MountsAction::class)
|
|
|
|
->setName('stations:mounts:index')
|
2022-06-30 04:38:46 +00:00
|
|
|
->add(new Middleware\StationSupportsFeature(StationFeatures::MountPoints))
|
2022-01-07 08:26:40 +00:00
|
|
|
->add(new Middleware\Permissions(StationPermissions::MountPoints, true));
|
2020-12-22 21:40:33 +00:00
|
|
|
|
|
|
|
$group->get('/profile', Controller\Stations\ProfileController::class)
|
|
|
|
->setName('stations:profile:index');
|
|
|
|
|
|
|
|
$group->get(
|
|
|
|
'/profile/toggle/{feature}/{csrf}',
|
|
|
|
Controller\Stations\ProfileController::class . ':toggleAction'
|
|
|
|
)
|
|
|
|
->setName('stations:profile:toggle')
|
2022-01-07 08:26:40 +00:00
|
|
|
->add(new Middleware\Permissions(StationPermissions::Profile, true));
|
2020-12-22 21:40:33 +00:00
|
|
|
|
2021-10-23 17:11:20 +00:00
|
|
|
$group->get('/profile/edit', Controller\Stations\ProfileController::class . ':editAction')
|
2020-12-22 21:40:33 +00:00
|
|
|
->setName('stations:profile:edit')
|
2022-01-07 08:26:40 +00:00
|
|
|
->add(new Middleware\Permissions(StationPermissions::Profile, true));
|
2020-12-22 21:40:33 +00:00
|
|
|
|
2021-02-09 19:57:25 +00:00
|
|
|
$group->get('/queue', Controller\Stations\QueueAction::class)
|
2020-12-22 21:40:33 +00:00
|
|
|
->setName('stations:queue:index')
|
2022-06-30 04:38:46 +00:00
|
|
|
->add(new Middleware\StationSupportsFeature(StationFeatures::Media))
|
2022-01-07 08:26:40 +00:00
|
|
|
->add(new Middleware\Permissions(StationPermissions::Broadcasting, true));
|
2020-12-22 21:40:33 +00:00
|
|
|
|
2021-08-12 13:24:58 +00:00
|
|
|
$group->get('/remotes', Controller\Stations\RemotesAction::class)
|
|
|
|
->setName('stations:remotes:index')
|
2022-06-30 04:38:46 +00:00
|
|
|
->add(new Middleware\StationSupportsFeature(StationFeatures::RemoteRelays))
|
2022-01-07 08:26:40 +00:00
|
|
|
->add(new Middleware\Permissions(StationPermissions::RemoteRelays, true));
|
2020-12-22 21:40:33 +00:00
|
|
|
|
|
|
|
$group->group(
|
|
|
|
'/reports',
|
|
|
|
function (RouteCollectorProxy $group) {
|
2021-09-18 23:41:22 +00:00
|
|
|
$group->get('/overview', Controller\Stations\Reports\OverviewAction::class)
|
2020-12-22 21:40:33 +00:00
|
|
|
->setName('stations:reports:overview');
|
|
|
|
|
2021-09-11 23:09:50 +00:00
|
|
|
$group->get('/timeline', Controller\Stations\Reports\TimelineAction::class)
|
2020-12-22 21:40:33 +00:00
|
|
|
->setName('stations:reports:timeline');
|
|
|
|
|
2021-09-11 20:47:48 +00:00
|
|
|
$group->get('/listeners', Controller\Stations\Reports\ListenersAction::class)
|
2020-12-22 21:40:33 +00:00
|
|
|
->setName('stations:reports:listeners');
|
|
|
|
|
|
|
|
$group->map(
|
|
|
|
['GET', 'POST'],
|
|
|
|
'/soundexchange',
|
2021-11-04 17:35:13 +00:00
|
|
|
Controller\Stations\Reports\SoundExchangeAction::class
|
2020-12-22 21:40:33 +00:00
|
|
|
)
|
|
|
|
->setName('stations:reports:soundexchange');
|
|
|
|
|
2021-09-06 09:06:31 +00:00
|
|
|
$group->get('/requests', Controller\Stations\Reports\RequestsAction::class)
|
2020-12-22 21:40:33 +00:00
|
|
|
->setName('stations:reports:requests');
|
|
|
|
}
|
2022-01-07 08:26:40 +00:00
|
|
|
)->add(new Middleware\Permissions(StationPermissions::Reports, true));
|
2020-12-22 21:40:33 +00:00
|
|
|
|
2021-10-08 11:30:03 +00:00
|
|
|
$group->get('/sftp_users', Controller\Stations\SftpUsersAction::class)
|
|
|
|
->setName('stations:sftp_users:index')
|
2022-06-30 04:38:46 +00:00
|
|
|
->add(new Middleware\StationSupportsFeature(StationFeatures::Sftp))
|
2022-01-07 08:26:40 +00:00
|
|
|
->add(new Middleware\Permissions(StationPermissions::Media, true));
|
2020-12-22 21:40:33 +00:00
|
|
|
|
2021-02-09 19:57:25 +00:00
|
|
|
$group->get('/streamers', Controller\Stations\StreamersAction::class)
|
2020-12-22 21:40:33 +00:00
|
|
|
->setName('stations:streamers:index')
|
2022-06-30 04:38:46 +00:00
|
|
|
->add(new Middleware\StationSupportsFeature(StationFeatures::Streamers))
|
2022-01-07 08:26:40 +00:00
|
|
|
->add(new Middleware\Permissions(StationPermissions::Streamers, true));
|
2020-12-22 21:40:33 +00:00
|
|
|
|
2021-10-07 03:00:53 +00:00
|
|
|
$group->get('/webhooks', Controller\Stations\WebhooksAction::class)
|
|
|
|
->setName('stations:webhooks:index')
|
2022-06-30 04:38:46 +00:00
|
|
|
->add(new Middleware\StationSupportsFeature(StationFeatures::Webhooks))
|
2022-01-07 08:26:40 +00:00
|
|
|
->add(new Middleware\Permissions(StationPermissions::WebHooks, true));
|
2020-12-22 21:40:33 +00:00
|
|
|
}
|
|
|
|
)
|
2020-04-08 04:19:24 +00:00
|
|
|
->add(Middleware\Module\Stations::class)
|
2022-01-07 08:26:40 +00:00
|
|
|
->add(new Middleware\Permissions(StationPermissions::View, true))
|
2020-04-08 04:19:24 +00:00
|
|
|
->add(Middleware\RequireStation::class)
|
|
|
|
->add(Middleware\GetStation::class)
|
|
|
|
->add(Middleware\EnableView::class)
|
|
|
|
->add(Middleware\RequireLogin::class);
|
2020-12-22 21:40:33 +00:00
|
|
|
};
|