fix: fake handle in case it does not exist

This commit is contained in:
Maël Gangloff
2024-12-29 13:47:19 +01:00
parent 4761c982ad
commit 7275859bd6
3 changed files with 19 additions and 1 deletions

View File

@@ -106,6 +106,9 @@ class Domain
#[Groups(['domain:item', 'domain:list', 'watchlist:item', 'watchlist:list'])] #[Groups(['domain:item', 'domain:list', 'watchlist:item', 'watchlist:list'])]
private ?bool $deleted; private ?bool $deleted;
#[Groups(['domain:item'])]
private ?RdapServer $rdapServer;
/** /**
* @var Collection<int, DomainStatus> * @var Collection<int, DomainStatus>
*/ */
@@ -423,4 +426,14 @@ class Domain
return $this; return $this;
} }
public function getRdapServer(): ?RdapServer
{
return $this->rdapServer;
}
public function setRdapServer(?RdapServer $rdapServer): void
{
$this->rdapServer = $rdapServer;
}
} }

View File

@@ -5,12 +5,14 @@ namespace App\Entity;
use App\Repository\RdapServerRepository; use App\Repository\RdapServerRepository;
use Doctrine\DBAL\Types\Types; use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Attribute\Groups;
#[ORM\Entity(repositoryClass: RdapServerRepository::class)] #[ORM\Entity(repositoryClass: RdapServerRepository::class)]
class RdapServer class RdapServer
{ {
#[ORM\Id] #[ORM\Id]
#[ORM\Column(length: 255)] #[ORM\Column(length: 255)]
#[Groups(['domain:item'])]
private ?string $url = null; private ?string $url = null;
#[ORM\Column(type: Types::DATE_IMMUTABLE)] #[ORM\Column(type: Types::DATE_IMMUTABLE)]

View File

@@ -144,6 +144,8 @@ readonly class RDAPService
$domain = $this->initNewDomain($idnDomain, $tld); $domain = $this->initNewDomain($idnDomain, $tld);
} }
$domain->setRdapServer($rdapServer);
$this->updateDomainStatus($domain, $rdapData); $this->updateDomainStatus($domain, $rdapData);
if (in_array('free', $domain->getStatus())) { if (in_array('free', $domain->getStatus())) {
@@ -488,7 +490,8 @@ readonly class RDAPService
* If there is no number to identify the entity, one is generated from the domain name and the roles associated with this entity * If there is no number to identify the entity, one is generated from the domain name and the roles associated with this entity
*/ */
if (!array_key_exists('handle', $rdapEntity) || '' === $rdapEntity['handle'] || in_array($rdapEntity['handle'], self::ENTITY_HANDLE_BLACKLIST)) { if (!array_key_exists('handle', $rdapEntity) || '' === $rdapEntity['handle'] || in_array($rdapEntity['handle'], self::ENTITY_HANDLE_BLACKLIST)) {
$rdapEntity['handle'] = 'DW-FAKEHANDLE-'.$domain.'-'.join(',', $roles); sort($roles);
$rdapEntity['handle'] = 'DW-FAKEHANDLE-'.$domain.'-'.implode(',', $roles);
$this->logger->warning('The entity {handle} has no handle key.', [ $this->logger->warning('The entity {handle} has no handle key.', [
'handle' => $rdapEntity['handle'], 'handle' => $rdapEntity['handle'],