Move allowed HTTP methods definition to RedirectStatus enum

This commit is contained in:
Alejandro Celaya 2024-04-12 09:24:05 +02:00
parent c57494d7cd
commit 13ee71f351
2 changed files with 11 additions and 7 deletions

View file

@ -4,8 +4,6 @@ declare(strict_types=1);
namespace Shlinkio\Shlink\Core\Config\PostProcessor;
use Fig\Http\Message\RequestMethodInterface;
use Mezzio\Router\Route;
use Shlinkio\Shlink\Core\Action\RedirectAction;
use Shlinkio\Shlink\Core\Util\RedirectStatus;
@ -40,9 +38,7 @@ class ShortUrlMethodsProcessor
$redirectStatus = RedirectStatus::tryFrom(
$config['redirects']['redirect_status_code'] ?? 0,
) ?? DEFAULT_REDIRECT_STATUS_CODE;
$redirectRoute['allowed_methods'] = $redirectStatus->isGetOnlyStatus()
? [RequestMethodInterface::METHOD_GET]
: Route::HTTP_METHOD_ANY;
$redirectRoute['allowed_methods'] = $redirectStatus->allowedHttpMethods();
$config['routes'] = [...$rest, $redirectRoute];
return $config;

View file

@ -2,6 +2,9 @@
namespace Shlinkio\Shlink\Core\Util;
use Fig\Http\Message\RequestMethodInterface;
use Mezzio\Router\Route;
use function Shlinkio\Shlink\Core\ArrayUtils\contains;
enum RedirectStatus: int
@ -16,8 +19,13 @@ enum RedirectStatus: int
return contains($this, [self::STATUS_301, self::STATUS_308]);
}
public function isGetOnlyStatus(): bool
/**
* @return array<RequestMethodInterface::METHOD_*>|Route::HTTP_METHOD_ANY
*/
public function allowedHttpMethods(): array|null
{
return contains($this, [self::STATUS_301, self::STATUS_302]);
return contains($this, [self::STATUS_301, self::STATUS_302])
? [RequestMethodInterface::METHOD_GET]
: Route::HTTP_METHOD_ANY;
}
}