false, 'verify_host' => false, ]); } /** * @throws TransportExceptionInterface * @throws ServerExceptionInterface * @throws RedirectionExceptionInterface * @throws ClientExceptionInterface */ public function __invoke(Client $client): JsonResponse { if (!$client->getIp()) { throw new ValidatorException('IP is required'); } try { $response = $this->httpClient->request('POST', 'https://' . $client->getIp() . ':8000/ogAdmClient/status'); $statusCode = $response->getStatusCode(); $client->setStatus($statusCode === Response::HTTP_OK ? 'active' : 'off'); } catch (TransportExceptionInterface $e) { $client->setStatus('off'); return new JsonResponse( data: ['error' => $e->getMessage()], status: Response::HTTP_INTERNAL_SERVER_ERROR ); } $data = json_decode($response->getContent(), true); if (isset($data['cfg'])) { foreach ($data['cfg'] as $cfg) { $partitionEntity = $this->entityManager->getRepository(Partition::class) ->findOneBy(['client' => $client, 'diskNumber' => $cfg['disk'], 'partitionNumber' => $cfg['par']]); if (!$partitionEntity) { $partitionEntity = new Partition(); } $partitionEntity->setClient($client); $partitionEntity->setDiskNumber($cfg['disk']); $partitionEntity->setPartitionNumber($cfg['par']); $partitionEntity->setSize($cfg['tam']); $partitionEntity->setMemoryUsage($cfg['uso']); $this->entityManager->persist($partitionEntity); } } $this->entityManager->persist($client); $this->entityManager->flush(); return new JsonResponse(status: Response::HTTP_OK); } }