mirror of
https://github.com/shlinkio/shlink.git
synced 2026-09-03 19:52:51 -05:00
Modernize DomainRedirectsRequest
This commit is contained in:
@@ -28,7 +28,7 @@ class DomainRedirectsAction extends AbstractRestAction
|
||||
$requestData = DomainRedirectsRequest::fromRawData($body);
|
||||
$apiKey = AuthenticationMiddleware::apiKeyFromRequest($request);
|
||||
|
||||
$authority = $requestData->authority();
|
||||
$authority = $requestData->authority;
|
||||
$domain = $this->domainService->getOrCreate($authority);
|
||||
$notFoundRedirects = $requestData->toNotFoundRedirects($domain);
|
||||
|
||||
|
||||
@@ -11,59 +11,47 @@ use Shlinkio\Shlink\Core\Exception\ValidationException;
|
||||
|
||||
use function array_key_exists;
|
||||
|
||||
class DomainRedirectsRequest
|
||||
final readonly class DomainRedirectsRequest
|
||||
{
|
||||
private string $authority;
|
||||
private string|null $baseUrlRedirect = null;
|
||||
private bool $baseUrlRedirectWasProvided = false;
|
||||
private string|null $regular404Redirect = null;
|
||||
private bool $regular404RedirectWasProvided = false;
|
||||
private string|null $invalidShortUrlRedirect = null;
|
||||
private bool $invalidShortUrlRedirectWasProvided = false;
|
||||
|
||||
private function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
public static function fromRawData(array $payload): self
|
||||
{
|
||||
$instance = new self();
|
||||
$instance->validateAndInit($payload);
|
||||
return $instance;
|
||||
private function __construct(
|
||||
private(set) string $authority,
|
||||
private string|null $baseUrlRedirect = null,
|
||||
private bool $baseUrlRedirectWasProvided = false,
|
||||
private string|null $regular404Redirect = null,
|
||||
private bool $regular404RedirectWasProvided = false,
|
||||
private string|null $invalidShortUrlRedirect = null,
|
||||
private bool $invalidShortUrlRedirectWasProvided = false,
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws ValidationException
|
||||
*/
|
||||
private function validateAndInit(array $payload): void
|
||||
public static function fromRawData(array $payload): self
|
||||
{
|
||||
$inputFilter = DomainRedirectsInputFilter::withData($payload);
|
||||
if (! $inputFilter->isValid()) {
|
||||
throw ValidationException::fromInputFilter($inputFilter);
|
||||
}
|
||||
|
||||
$this->baseUrlRedirectWasProvided = array_key_exists(
|
||||
DomainRedirectsInputFilter::BASE_URL_REDIRECT,
|
||||
$payload,
|
||||
return new self(
|
||||
authority: $inputFilter->getValue(DomainRedirectsInputFilter::DOMAIN),
|
||||
baseUrlRedirect: $inputFilter->getValue(DomainRedirectsInputFilter::BASE_URL_REDIRECT),
|
||||
baseUrlRedirectWasProvided: array_key_exists(
|
||||
DomainRedirectsInputFilter::BASE_URL_REDIRECT,
|
||||
$payload,
|
||||
),
|
||||
regular404Redirect: $inputFilter->getValue(DomainRedirectsInputFilter::REGULAR_404_REDIRECT),
|
||||
regular404RedirectWasProvided: array_key_exists(
|
||||
DomainRedirectsInputFilter::REGULAR_404_REDIRECT,
|
||||
$payload,
|
||||
),
|
||||
invalidShortUrlRedirect: $inputFilter->getValue(DomainRedirectsInputFilter::INVALID_SHORT_URL_REDIRECT),
|
||||
invalidShortUrlRedirectWasProvided: array_key_exists(
|
||||
DomainRedirectsInputFilter::INVALID_SHORT_URL_REDIRECT,
|
||||
$payload,
|
||||
),
|
||||
);
|
||||
$this->regular404RedirectWasProvided = array_key_exists(
|
||||
DomainRedirectsInputFilter::REGULAR_404_REDIRECT,
|
||||
$payload,
|
||||
);
|
||||
$this->invalidShortUrlRedirectWasProvided = array_key_exists(
|
||||
DomainRedirectsInputFilter::INVALID_SHORT_URL_REDIRECT,
|
||||
$payload,
|
||||
);
|
||||
|
||||
$this->authority = $inputFilter->getValue(DomainRedirectsInputFilter::DOMAIN);
|
||||
$this->baseUrlRedirect = $inputFilter->getValue(DomainRedirectsInputFilter::BASE_URL_REDIRECT);
|
||||
$this->regular404Redirect = $inputFilter->getValue(DomainRedirectsInputFilter::REGULAR_404_REDIRECT);
|
||||
$this->invalidShortUrlRedirect = $inputFilter->getValue(DomainRedirectsInputFilter::INVALID_SHORT_URL_REDIRECT);
|
||||
}
|
||||
|
||||
public function authority(): string
|
||||
{
|
||||
return $this->authority;
|
||||
}
|
||||
|
||||
public function toNotFoundRedirects(NotFoundRedirectConfigInterface|null $defaults = null): NotFoundRedirects
|
||||
|
||||
@@ -39,7 +39,7 @@ class DomainRedirectsRequestTest extends TestCase
|
||||
$request = DomainRedirectsRequest::fromRawData($data);
|
||||
$notFound = $request->toNotFoundRedirects($defaults);
|
||||
|
||||
self::assertEquals($expectedAuthority, $request->authority());
|
||||
self::assertEquals($expectedAuthority, $request->authority);
|
||||
self::assertEquals($expectedBaseUrlRedirect, $notFound->baseUrlRedirect);
|
||||
self::assertEquals($expectedRegular404Redirect, $notFound->regular404Redirect);
|
||||
self::assertEquals($expectedInvalidShortUrlRedirect, $notFound->invalidShortUrlRedirect);
|
||||
|
||||
Reference in New Issue
Block a user