feat: add DTO for EPP client

This commit is contained in:
Maël Gangloff 2025-02-23 00:47:51 +01:00
parent 81147d2069
commit 42cbf5e416
No known key found for this signature in database
GPG Key ID: 11FDC81C24A7F629
6 changed files with 122 additions and 10 deletions

View File

@ -0,0 +1,17 @@
<?php
namespace App\Dto\Connector;
use Symfony\Component\Validator\Constraints as Assert;
final class EppClientProviderAuthDto
{
#[Assert\NotBlank]
public string $username;
#[Assert\NotBlank]
public string $password;
#[Assert\NotBlank]
public EppClientProviderAuthSSLDto $ssl;
}

View File

@ -0,0 +1,20 @@
<?php
namespace App\Dto\Connector;
final class EppClientProviderAuthSSLDto
{
public ?string $peer_name = null;
public ?bool $verify_peer = null;
public ?bool $verify_peer_name = null;
public ?bool $allow_self_signed = null;
public ?int $verify_depth = null;
public ?string $passphrase = null;
public ?bool $disable_compression = null;
}

View File

@ -0,0 +1,23 @@
<?php
namespace App\Dto\Connector;
use Symfony\Component\Validator\Constraints as Assert;
final class EppClientProviderDomainDto
{
#[Assert\NotBlank]
public int $period;
#[Assert\NotBlank]
public string $unit;
#[Assert\NotBlank]
public string $registrant;
#[Assert\NotBlank]
public string $password;
#[Assert\NotBlank]
public array $contacts;
}

View File

@ -0,0 +1,40 @@
<?php
namespace App\Dto\Connector;
use Symfony\Component\Validator\Constraints as Assert;
final class EppClientProviderDto extends DefaultProviderDto
{
#[Assert\NotBlank]
public string $version;
#[Assert\NotBlank]
public string $language;
#[Assert\NotBlank]
public string $hostname;
#[Assert\NotBlank]
public int $port;
#[Assert\NotBlank]
public EppClientProviderAuthDto $auth;
#[Assert\NotBlank]
public EppClientProviderDomainDto $domain;
public array $xPathURI = [];
public array $extURI = [];
public array $objURI = [];
#[Assert\NotBlank]
public string $certificate_pem;
#[Assert\NotBlank]
public string $certificate_key;
public ?EppClientProviderFilesDto $files;
}

View File

@ -0,0 +1,14 @@
<?php
namespace App\Dto\Connector;
use Symfony\Component\Validator\Constraints as Assert;
final class EppClientProviderFilesDto
{
#[Assert\NotBlank]
public string $pem;
#[Assert\NotBlank]
public string $key;
}

View File

@ -2,6 +2,7 @@
namespace App\Service\Connector; namespace App\Service\Connector;
use App\Dto\Connector\EppClientProviderDto;
use App\Entity\Domain; use App\Entity\Domain;
use Metaregistrar\EPP\eppCheckDomainRequest; use Metaregistrar\EPP\eppCheckDomainRequest;
use Metaregistrar\EPP\eppCheckDomainResponse; use Metaregistrar\EPP\eppCheckDomainResponse;
@ -14,26 +15,23 @@ use Metaregistrar\EPP\eppHelloRequest;
use Psr\Cache\CacheItemInterface; use Psr\Cache\CacheItemInterface;
use Psr\Cache\CacheItemPoolInterface; use Psr\Cache\CacheItemPoolInterface;
use Psr\Cache\InvalidArgumentException; use Psr\Cache\InvalidArgumentException;
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
use Symfony\Component\Validator\Validator\ValidatorInterface;
class EppClientProvider extends AbstractProvider implements CheckDomainProviderInterface class EppClientProvider extends AbstractProvider implements CheckDomainProviderInterface
{ {
public const EPP_CERTIFICATES_PATH = '../var/epp-certificates/'; public const EPP_CERTIFICATES_PATH = '../var/epp-certificates/';
protected string $dtoClass = EppClientProviderDto::class;
private eppConnection $eppClient; private eppConnection $eppClient;
public function __construct( public function __construct(
CacheItemPoolInterface $cacheItemPool, CacheItemPoolInterface $cacheItemPool,
DenormalizerInterface&NormalizerInterface $serializer,
ValidatorInterface $validator,
) { ) {
parent::__construct($cacheItemPool); parent::__construct($cacheItemPool, $serializer, $validator);
}
protected function verifySpecificAuthData(array $authData): array
{
// TODO: Create DTO for each authData schema
unset($authData['certificate_pem']);
unset($authData['certificate_key']);
return $authData;
} }
protected function assertAuthentication(): void protected function assertAuthentication(): void