ENom.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\App\Libs\Api;
  3. use ModulesGarden\ProxmoxAddon\App\Libs\Api\ENom\Parser;
  4. use ModulesGarden\ProxmoxAddon\Core\Api\AbstractApi;
  5. use ModulesGarden\ProxmoxAddon\Core\ModuleConstants;
  6. use Mso\IdnaConvert\IdnaConvert;
  7. /**
  8. * Description of ENom
  9. *
  10. * @author Rafał Ossowski <rafal.os@modulesgarden.com>
  11. */
  12. class ENom extends AbstractApi
  13. {
  14. const METHOD_API_CHECK_ONE_DOMAIN = 'CheckOneDomain';
  15. const METHOD_API_CHECK_MORE_DOMAINS = 'CheckMoreDomains';
  16. protected $settings;
  17. protected $request;
  18. /**
  19. * @var IdnaConvert
  20. */
  21. protected $idnaConvert;
  22. public function __construct(IdnaConvert $idnaConvert)
  23. {
  24. $this->idnaConvert = $idnaConvert;
  25. }
  26. public function setSettings($settings)
  27. {
  28. $this->settings = $settings;
  29. return $this;
  30. }
  31. public function checkMoreDomain($records)
  32. {
  33. return $this->loadRequest()->callToMethod(self::METHOD_API_CHECK_MORE_DOMAINS, $records);
  34. }
  35. protected function callToMethod($name, $params = null)
  36. {
  37. $namespace = "\\" . ModuleConstants::getRootNamespace() . "\App\Libs\Api\ENom\Method\\" . $name;
  38. return (new $namespace($this->request, $this->settings, $this->idnaConvert))->execute($params);
  39. }
  40. protected function loadRequest()
  41. {
  42. $this->request = $this->getNewRequest();
  43. $this->request->setCurlParser(new Parser())
  44. ->setUrl('https://' . $this->settings['hostname'] . '/interface.asp')
  45. ->resetHeaders();
  46. return $this;
  47. }
  48. public function checkOneDomain($record)
  49. {
  50. return $this->loadRequest()->callToMethod(self::METHOD_API_CHECK_ONE_DOMAIN, $record);
  51. }
  52. }