feat: add tld properties on API

This commit is contained in:
Maël Gangloff
2024-07-19 20:40:30 +02:00
parent 300e68e3a1
commit e4334b2eb5
6 changed files with 32 additions and 47 deletions

View File

@@ -2,18 +2,36 @@
namespace App\Entity;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\GetCollection;
use App\Repository\TldRepository;
use DateTimeImmutable;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Attribute\Groups;
#[ApiResource(
shortName: 'Top Level Domain',
operations: [
new GetCollection(
uriTemplate: '/tld',
normalizationContext: ['groups' => ['tld:list']]
),
new Get(
uriTemplate: '/tld/{tld}',
normalizationContext: ['groups' => ['tld:item']]
)
]
)]
#[ORM\Entity(repositoryClass: TldRepository::class)]
class Tld
{
#[ORM\Id]
#[ORM\Column(length: 63)]
#[Groups(["tld:list", "tld:item"])]
private ?string $tld = null;
/**
* @var Collection<int, RdapServer>
@@ -22,21 +40,27 @@ class Tld
private Collection $rdapServers;
#[ORM\Column(nullable: true)]
#[Groups(["tld:list", "tld:item"])]
private ?bool $contractTerminated = null;
#[ORM\Column(type: Types::DATE_IMMUTABLE, nullable: true)]
#[Groups(["tld:item"])]
private ?DateTimeImmutable $dateOfContractSignature = null;
#[ORM\Column(type: Types::DATE_IMMUTABLE, nullable: true)]
#[Groups(["tld:item"])]
private ?DateTimeImmutable $delegationDate = null;
#[ORM\Column(length: 255, nullable: true)]
#[Groups(["tld:item"])]
private ?string $registryOperator = null;
#[ORM\Column(type: Types::DATE_IMMUTABLE, nullable: true)]
#[Groups(["tld:item"])]
private ?DateTimeImmutable $removalDate = null;
#[ORM\Column(nullable: true)]
#[Groups(["tld:item"])]
private ?bool $specification13 = null;
public function __construct()

View File

@@ -15,7 +15,6 @@ use Throwable;
#[AsMessageHandler]
final readonly class UpdateRdapServersHandler
{
public function __construct(private RDAPService $RDAPService)
{

View File

@@ -259,6 +259,7 @@ readonly class RDAPService
foreach ($dnsRoot['services'] as $service) {
foreach ($service[0] as $tld) {
if ($tld === "") continue;
$tldReference = $this->em->getReference(Tld::class, $tld);
foreach ($service[1] as $rdapServerUrl) {
$server = $this->rdapServerRepository->findOneBy(["tld" => $tldReference, "url" => $rdapServerUrl]); //ICI
@@ -293,6 +294,7 @@ readonly class RDAPService
foreach (array_diff($tldList, $storedTldList) as $tld) {
if ($tld === "") continue;
$this->em->persist((new Tld())->setTld($tld));
}
$this->em->flush();
@@ -313,6 +315,7 @@ readonly class RDAPService
)->toArray()['gTLDs'];
foreach ($gTldList as $gTld) {
if ($gTld['gTLD'] === "") continue;
$gtTldEntity = $this->tldRepository->findOneBy(['tld' => $gTld['gTLD']]);
if ($gtTldEntity === null) $gtTldEntity = new Tld();