From f225213c496aec43964c079b0a15409653a4f2cf Mon Sep 17 00:00:00 2001 From: vinceh121 Date: Mon, 19 Aug 2024 21:17:57 +0200 Subject: [PATCH] chore: progress towards namecheap --- src/Config/ConnectorProvider.php | 9 ++-- .../ProcessDomainTriggerHandler.php | 8 ++-- .../Connector/ConnectorInterface.php | 2 +- .../Connector/GandiConnector.php | 2 +- src/Service/Connector/NamecheapConnector.php | 48 +++++++++++++++++++ .../Connector/OvhConnector.php | 5 +- 6 files changed, 64 insertions(+), 10 deletions(-) rename src/{Config => Service}/Connector/ConnectorInterface.php (91%) rename src/{Config => Service}/Connector/GandiConnector.php (99%) create mode 100644 src/Service/Connector/NamecheapConnector.php rename src/{Config => Service}/Connector/OvhConnector.php (99%) diff --git a/src/Config/ConnectorProvider.php b/src/Config/ConnectorProvider.php index 62d8e4a..c64d2ad 100644 --- a/src/Config/ConnectorProvider.php +++ b/src/Config/ConnectorProvider.php @@ -2,19 +2,22 @@ namespace App\Config; -use App\Config\Connector\GandiConnector; -use App\Config\Connector\OvhConnector; +use App\Service\Connector\OvhConnector; +use App\Service\Connector\GandiConnector; +use App\Service\Connector\NamecheapConnector; enum ConnectorProvider: string { case OVH = 'ovh'; case GANDI = 'gandi'; + case NAMECHEAP = 'namecheap'; public function getConnectorProvider(): string { return match ($this) { ConnectorProvider::OVH => OvhConnector::class, - ConnectorProvider::GANDI => GandiConnector::class + ConnectorProvider::GANDI => GandiConnector::class, + ConnectorProvider::NAMECHEAP => NamecheapConnector::class }; } } diff --git a/src/MessageHandler/ProcessDomainTriggerHandler.php b/src/MessageHandler/ProcessDomainTriggerHandler.php index 6c85a31..78ac52d 100644 --- a/src/MessageHandler/ProcessDomainTriggerHandler.php +++ b/src/MessageHandler/ProcessDomainTriggerHandler.php @@ -2,7 +2,6 @@ namespace App\MessageHandler; -use App\Config\Connector\ConnectorInterface; use App\Config\TriggerAction; use App\Entity\Connector; use App\Entity\Domain; @@ -22,6 +21,8 @@ use Symfony\Component\Messenger\Attribute\AsMessageHandler; use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Email; use Symfony\Contracts\HttpClient\HttpClientInterface; +use App\Service\Connector\ConnectorInterface; +use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface; #[AsMessageHandler] final readonly class ProcessDomainTriggerHandler @@ -34,7 +35,8 @@ final readonly class ProcessDomainTriggerHandler private DomainRepository $domainRepository, private KernelInterface $kernel, private LoggerInterface $logger, - private HttpClientInterface $client + private HttpClientInterface $client, + private ContainerBagInterface $container ) { } @@ -66,7 +68,7 @@ final readonly class ProcessDomainTriggerHandler $connectorProviderClass = $provider->getConnectorProvider(); /** @var ConnectorInterface $connectorProvider */ - $connectorProvider = new $connectorProviderClass($connector->getAuthData(), $this->client); + $connectorProvider = $this->container->get($connectorProviderClass); $connectorProvider->orderDomain($domain, $this->kernel->isDebug()); diff --git a/src/Config/Connector/ConnectorInterface.php b/src/Service/Connector/ConnectorInterface.php similarity index 91% rename from src/Config/Connector/ConnectorInterface.php rename to src/Service/Connector/ConnectorInterface.php index 46f473e..3989b5e 100644 --- a/src/Config/Connector/ConnectorInterface.php +++ b/src/Service/Connector/ConnectorInterface.php @@ -1,6 +1,6 @@ authData; + } + + $actualParams = array_merge([ + 'ApiUser' => $authData['ApiUser'], + 'ApiKey' => $authData['ApiKey'] + ], $parameters); + + $response = $this->client->request('POST', BASE_URL, [ + 'query' => $actualParams + ]); + + $data = new \SimpleXMLElement($response->getContent()); + + if ($data->errors->error) { + throw new \Exception(implode(', ', $data->errors->error)); // FIXME better exception type + } + + return $data->CommandResponse; + } + + public static function verifyAuthData(array $authData, HttpClientInterface $client): array + { + } +} + diff --git a/src/Config/Connector/OvhConnector.php b/src/Service/Connector/OvhConnector.php similarity index 99% rename from src/Config/Connector/OvhConnector.php rename to src/Service/Connector/OvhConnector.php index f46021e..b99dc73 100644 --- a/src/Config/Connector/OvhConnector.php +++ b/src/Service/Connector/OvhConnector.php @@ -1,6 +1,6 @@ 'GET', 'path' => '/order/cart', - ], [ + ], + [ 'method' => 'GET', 'path' => '/order/cart/*', ],