mirror of
https://github.com/maelgangloff/domain-watchdog.git
synced 2025-12-29 16:15:04 +00:00
chore: processEntity
This commit is contained in:
@@ -33,18 +33,20 @@ use Symfony\Component\Routing\Attribute\Route;
|
|||||||
class TestController extends AbstractController
|
class TestController extends AbstractController
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public function __construct(private EntityRepository $entityRepository,
|
||||||
|
private DomainRepository $domainRepository,
|
||||||
|
private DomainEventRepository $domainEventRepository,
|
||||||
|
private NameserverRepository $nameserverRepository,
|
||||||
|
private NameserverEntityRepository $nameserverEntityRepository,
|
||||||
|
private EntityEventRepository $entityEventRepository,
|
||||||
|
private DomainEntityRepository $domainEntityRepository,
|
||||||
|
private EntityManagerInterface $em)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#[Route(path: '/test/{fqdn}', name: 'test')]
|
#[Route(path: '/test/{fqdn}', name: 'test')]
|
||||||
public function testRoute(
|
public function testRoute(string $fqdn): Response
|
||||||
string $fqdn,
|
|
||||||
EntityRepository $entityRepository,
|
|
||||||
DomainRepository $domainRepository,
|
|
||||||
DomainEventRepository $domainEventRepository,
|
|
||||||
NameserverRepository $nameserverRepository,
|
|
||||||
NameserverEntityRepository $nameserverEntityRepository,
|
|
||||||
EntityEventRepository $entityEventRepository,
|
|
||||||
DomainEntityRepository $domainEntityRepository,
|
|
||||||
EntityManagerInterface $em
|
|
||||||
): Response
|
|
||||||
{
|
{
|
||||||
$rdap = new RDAPClient(['domain' => 'https://rdap.nic.fr/domain/']);
|
$rdap = new RDAPClient(['domain' => 'https://rdap.nic.fr/domain/']);
|
||||||
try {
|
try {
|
||||||
@@ -55,7 +57,7 @@ class TestController extends AbstractController
|
|||||||
return new Response(null, Response::HTTP_INTERNAL_SERVER_ERROR);
|
return new Response(null, Response::HTTP_INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
$domain = $domainRepository->findOneBy(["handle" => $res['handle']]);
|
$domain = $this->domainRepository->findOneBy(["handle" => $res['handle']]);
|
||||||
if ($domain === null) $domain = new Domain();
|
if ($domain === null) $domain = new Domain();
|
||||||
|
|
||||||
$domain->setLdhName($res['ldhName'])
|
$domain->setLdhName($res['ldhName'])
|
||||||
@@ -65,7 +67,7 @@ class TestController extends AbstractController
|
|||||||
|
|
||||||
|
|
||||||
foreach ($res['events'] as $rdapEvent) {
|
foreach ($res['events'] as $rdapEvent) {
|
||||||
$event = $domainEventRepository->findOneBy([
|
$event = $this->domainEventRepository->findOneBy([
|
||||||
"action" => EventAction::from($rdapEvent["eventAction"]),
|
"action" => EventAction::from($rdapEvent["eventAction"]),
|
||||||
"date" => new DateTimeImmutable($rdapEvent["eventDate"]),
|
"date" => new DateTimeImmutable($rdapEvent["eventDate"]),
|
||||||
"domain" => $res['handle']
|
"domain" => $res['handle']
|
||||||
@@ -80,33 +82,9 @@ class TestController extends AbstractController
|
|||||||
|
|
||||||
|
|
||||||
foreach ($res['entities'] as $rdapEntity) {
|
foreach ($res['entities'] as $rdapEntity) {
|
||||||
$entity = $entityRepository->findOneBy([
|
$entity = $this->processEntity($rdapEntity);
|
||||||
"handle" => $rdapEntity['handle']
|
|
||||||
]);
|
|
||||||
|
|
||||||
if ($entity === null) $entity = new Entity();
|
$domainEntity = $this->domainEntityRepository->findOneBy([
|
||||||
$entity
|
|
||||||
->setHandle($rdapEntity['handle'])
|
|
||||||
->setJCard($rdapEntity['vcardArray']);
|
|
||||||
|
|
||||||
|
|
||||||
foreach ($rdapEntity['events'] as $rdapEntityEvent) {
|
|
||||||
$event = $entityEventRepository->findOneBy([
|
|
||||||
"action" => EventAction::from($rdapEntityEvent["eventAction"]),
|
|
||||||
"date" => new DateTimeImmutable($rdapEntityEvent["eventDate"]),
|
|
||||||
"entity" => $entity
|
|
||||||
]);
|
|
||||||
|
|
||||||
if ($event !== null) continue;
|
|
||||||
$entity->addEvent(
|
|
||||||
(new EntityEvent())
|
|
||||||
->setEntity($entity)
|
|
||||||
->setAction(EventAction::from($rdapEntityEvent['eventAction']))
|
|
||||||
->setDate(new DateTimeImmutable($rdapEntityEvent['eventDate'])));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
$domainEntity = $domainEntityRepository->findOneBy([
|
|
||||||
"domain" => $domain,
|
"domain" => $domain,
|
||||||
"entity" => $entity
|
"entity" => $entity
|
||||||
]);
|
]);
|
||||||
@@ -119,16 +97,16 @@ class TestController extends AbstractController
|
|||||||
->setEntity($entity)
|
->setEntity($entity)
|
||||||
->setRoles(array_map(fn($str): DomainRole => DomainRole::from($str), $rdapEntity['roles'])));
|
->setRoles(array_map(fn($str): DomainRole => DomainRole::from($str), $rdapEntity['roles'])));
|
||||||
|
|
||||||
$em->persist($entity);
|
$this->em->persist($entity);
|
||||||
$em->flush();
|
$this->em->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
$em->persist($domain);
|
$this->em->persist($domain);
|
||||||
$em->flush();
|
$this->em->flush();
|
||||||
|
|
||||||
|
|
||||||
foreach ($res['nameservers'] as $rdapNameserver) {
|
foreach ($res['nameservers'] as $rdapNameserver) {
|
||||||
$nameserver = $nameserverRepository->findOneBy([
|
$nameserver = $this->nameserverRepository->findOneBy([
|
||||||
"handle" => $rdapNameserver['handle']
|
"handle" => $rdapNameserver['handle']
|
||||||
]);
|
]);
|
||||||
if ($nameserver === null) $nameserver = new Nameserver();
|
if ($nameserver === null) $nameserver = new Nameserver();
|
||||||
@@ -139,36 +117,9 @@ class TestController extends AbstractController
|
|||||||
->setStatus(array_map(fn($str): DomainStatus => DomainStatus::from($str), $rdapNameserver['status']));
|
->setStatus(array_map(fn($str): DomainStatus => DomainStatus::from($str), $rdapNameserver['status']));
|
||||||
|
|
||||||
foreach ($rdapNameserver['entities'] as $rdapEntity) {
|
foreach ($rdapNameserver['entities'] as $rdapEntity) {
|
||||||
$entity = $entityRepository->findOneBy([
|
$entity = $this->processEntity($rdapEntity);
|
||||||
"handle" => $rdapEntity['handle']
|
|
||||||
]);
|
|
||||||
|
|
||||||
if ($entity === null) $entity = new Entity();
|
$nameserverEntity = $this->nameserverEntityRepository->findOneBy([
|
||||||
$entity
|
|
||||||
->setHandle($rdapEntity['handle'])
|
|
||||||
->setJCard($rdapEntity['vcardArray']);
|
|
||||||
|
|
||||||
|
|
||||||
foreach ($rdapEntity['events'] as $rdapEntityEvent) {
|
|
||||||
$event = $entityEventRepository->findOneBy([
|
|
||||||
"action" => EventAction::from($rdapEntityEvent["eventAction"]),
|
|
||||||
"date" => new DateTimeImmutable($rdapEntityEvent["eventDate"]),
|
|
||||||
"entity" => $entity
|
|
||||||
]);
|
|
||||||
|
|
||||||
if ($event !== null) continue;
|
|
||||||
$entity->addEvent(
|
|
||||||
(new EntityEvent())
|
|
||||||
->setEntity($entity)
|
|
||||||
->setAction(EventAction::from($rdapEntityEvent['eventAction']))
|
|
||||||
->setDate(new DateTimeImmutable($rdapEntityEvent['eventDate'])));
|
|
||||||
$em->persist($entity);
|
|
||||||
$em->flush();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$nameserverEntity = $nameserverEntityRepository->findOneBy([
|
|
||||||
"nameserver" => $nameserver,
|
"nameserver" => $nameserver,
|
||||||
"entity" => $entity
|
"entity" => $entity
|
||||||
]);
|
]);
|
||||||
@@ -186,10 +137,40 @@ class TestController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$em->persist($domain);
|
$this->em->persist($domain);
|
||||||
$em->flush();
|
$this->em->flush();
|
||||||
|
|
||||||
return new Response(null, Response::HTTP_OK);
|
return new Response(null, Response::HTTP_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function processEntity(array $rdapEntity): Entity
|
||||||
|
{
|
||||||
|
$entity = $this->entityRepository->findOneBy([
|
||||||
|
"handle" => $rdapEntity['handle']
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($entity === null) $entity = new Entity();
|
||||||
|
$entity
|
||||||
|
->setHandle($rdapEntity['handle'])
|
||||||
|
->setJCard($rdapEntity['vcardArray']);
|
||||||
|
|
||||||
|
|
||||||
|
foreach ($rdapEntity['events'] as $rdapEntityEvent) {
|
||||||
|
$event = $this->entityEventRepository->findOneBy([
|
||||||
|
"action" => EventAction::from($rdapEntityEvent["eventAction"]),
|
||||||
|
"date" => new DateTimeImmutable($rdapEntityEvent["eventDate"]),
|
||||||
|
"entity" => $entity
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($event !== null) continue;
|
||||||
|
$entity->addEvent(
|
||||||
|
(new EntityEvent())
|
||||||
|
->setEntity($entity)
|
||||||
|
->setAction(EventAction::from($rdapEntityEvent['eventAction']))
|
||||||
|
->setDate(new DateTimeImmutable($rdapEntityEvent['eventDate'])));
|
||||||
|
|
||||||
|
}
|
||||||
|
return $entity;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user