Implement common rate limit on public downloads of media.

This commit is contained in:
Buster Neece 2024-04-28 14:21:24 -05:00
parent efd6c8f0de
commit 1c290a9d05
No known key found for this signature in database
3 changed files with 8 additions and 2 deletions

View File

@ -120,7 +120,8 @@ return static function (RouteCollectorProxy $group) {
$group->get(
'/download[.{extension}]',
Controller\Api\Stations\Podcasts\Episodes\Media\GetMediaAction::class
)->setName('api:stations:public:podcast:episode:download');
)->setName('api:stations:public:podcast:episode:download')
->add(Middleware\RateLimit::forDownloads());
}
);
}

View File

@ -46,7 +46,7 @@ return static function (RouteCollectorProxy $group) {
$group->get('/ondemand/download/{media_id}', Controller\Api\Stations\OnDemand\DownloadAction::class)
->setName('api:stations:ondemand:download')
->add(new Middleware\StationSupportsFeature(StationFeatures::OnDemand))
->add(new Middleware\RateLimit('ondemand', 1, 2));
->add(Middleware\RateLimit::forDownloads());
// NOTE: See ./api_public.php for podcast public pages.

View File

@ -27,4 +27,9 @@ final class RateLimit extends AbstractMiddleware
return $handler->handle($request);
}
public static function forDownloads(): self
{
return new self('downloads', 30, 10);
}
}