refactor: processing of entity

This commit is contained in:
Maël Gangloff 2025-09-11 10:43:48 +02:00
parent 66d9e8b112
commit a3fb6dc873
No known key found for this signature in database
GPG Key ID: 11FDC81C24A7F629

View File

@ -519,8 +519,10 @@ readonly class RDAPService
*/ */
private function registerEntity(array $rdapEntity, array $roles, string $domain, Tld $tld): Entity private function registerEntity(array $rdapEntity, array $roles, string $domain, Tld $tld): Entity
{ {
/* /**
* If the RDAP server transmits the entity's IANA number, it is used as a priority to identify the entity * If the RDAP server transmits the entity's IANA number, it is used as a priority to identify the entity.
*
* @see https://datatracker.ietf.org/doc/html/rfc7483#section-4.8
*/ */
$isIANAid = false; $isIANAid = false;
if (isset($rdapEntity['publicIds'])) { if (isset($rdapEntity['publicIds'])) {
@ -547,14 +549,15 @@ readonly class RDAPService
$entity = $this->entityRepository->findOneBy([ $entity = $this->entityRepository->findOneBy([
'handle' => $rdapEntity['handle'], 'handle' => $rdapEntity['handle'],
'tld' => $tld, 'tld' => $isIANAid ? null : $tld,
]); ]);
if (null === $entity) { if ($isIANAid && null !== $entity) {
$entity = $this->entityRepository->findOneBy([ return $entity;
'handle' => $rdapEntity['handle'], }
'tld' => null,
]); if ($isIANAid && null === $entity) {
throw new ServiceUnavailableHttpException('The server does not know the IANA identifier of this registrar ('.$rdapEntity['handle'].')');
} }
if (null === $entity) { if (null === $entity) {
@ -567,11 +570,11 @@ readonly class RDAPService
$entity->setHandle($rdapEntity['handle']); $entity->setHandle($rdapEntity['handle']);
if (isset($rdapEntity['remarks']) && is_array($rdapEntity['remarks']) && null === $entity->getIanaAccreditation()->getStatus()) { if (isset($rdapEntity['remarks']) && is_array($rdapEntity['remarks'])) {
$entity->setRemarks($rdapEntity['remarks']); $entity->setRemarks($rdapEntity['remarks']);
} }
if (isset($rdapEntity['vcardArray']) && null === $entity->getIanaAccreditation()->getStatus()) { if (isset($rdapEntity['vcardArray'])) {
if (empty($entity->getJCard())) { if (empty($entity->getJCard())) {
if (!array_key_exists('elements', $rdapEntity['vcardArray'])) { if (!array_key_exists('elements', $rdapEntity['vcardArray'])) {
$entity->setJCard($rdapEntity['vcardArray']); $entity->setJCard($rdapEntity['vcardArray']);
@ -605,10 +608,7 @@ readonly class RDAPService
} }
} }
if ($isIANAid || !isset($rdapEntity['events']) || null !== $entity->getIanaAccreditation()->getStatus()) { if (isset($rdapEntity['events'])) {
return $entity;
}
/** @var EntityEvent $event */ /** @var EntityEvent $event */
foreach ($entity->getEvents()->getIterator() as $event) { foreach ($entity->getEvents()->getIterator() as $event) {
$event->setDeleted(true); $event->setDeleted(true);
@ -637,6 +637,7 @@ readonly class RDAPService
->setDate(new \DateTimeImmutable($rdapEntityEvent['eventDate'])) ->setDate(new \DateTimeImmutable($rdapEntityEvent['eventDate']))
->setDeleted(false)); ->setDeleted(false));
} }
}
$this->em->persist($entity); $this->em->persist($entity);
$this->em->flush(); $this->em->flush();