lemax10 / selectel-dns-sdk
Selectel DNS SDK
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.2
Requires (Dev)
- phpunit/phpunit: ^9.3.3
This package is auto-updated.
Last update: 2024-12-06 14:34:01 UTC
README
Selectel DNS SDK - Библиотека для работы с DNS услугой хостера Selectel по публичному API.
Конфигурация
Библиотека имеет конфигурационный файл использующий для стандартной работы env переменные с определенными по умолчанию данными. Если вы подключаете пакет в рамках проекта с поддержкой enviroinment переменных, используйте переменные для определения настроек:
SELECTEL_DOMAIN_REPOSITORY=SelectelDnsSdk\Repositories\DomainRepository SELECTEL_RECORD_REPOSITORY=SelectelDnsSdk\Repositories\DomainRepository SELECTEL_DNS_CLIENT_NAME=default SELECTEL_DNS_CLIENT_CLASS=SelectelDnsSdk\Client SELECTELD_DNS_CLIENT_TOKEN=#Укажите API TOKEN#
Менеджер
Библиотека реализует менеджера, которого требуется инициализировать для начала работы. Пример:
$manager = new \SelectelDnsSdk\Manager(require __DIR__ . '/vendor/lemax10/selectel-dns-sdk/config/config.php');
Клиент
Библиотека реализует клиент для запросов к API Selectel через промежуточный класс, в основе стандартного клиента используется GuzzleHttp библиотека. Пример:
$manager->getClient()
Домены
Библиотека реализует репозиторий для работы с доменами, доступ к репозиторию возможен через менеджера:
$manager->getDomains()
Все методы репозитория работают с результативным DTO - SelectelDnsSdk\Dtos\Domain.
Получить список доменов
При работе со списками, репозиторий использует генераторы. Из API выгружается весь список доменов постранично с лимитом 1000 доменов за раз, таким образом при вызове метода вы получите все имеющиеся домены
$domainList = $manager->getDomains()->all(); foreach($domainList as $domain) { echo "\n". $domain->name; }
P.S> Получение списка записей домена не реализовано из соображений необходимости работы с данными через репозиторий Записей
Получение данных домена по названию
$domain = $manager->getDomain()->findByName('example.com'); if ($domain === null) { die("Домен не найден"); } echo $domain->name; // example.com
Получение данных домена по ID
$domain = $manager->getDomain()->find(2); if ($domain === null) { die("Домен не найден"); } echo $domain->id; // 2
Добавить домен
Для добавления домена, необходимо воспользоваться DTO - SelectelDnsSdk\Dtos\DomainCreate Пример:
$domainCreateDTO = new \SelectelDnsSdk\Dtos\DomainCreate( name: 'example.com' ); $domain = $manager->getDomain()->add($domainCreateDTO); echo $domain->name; // example.com
Удалить домен
$state = $manager->getDomain()->delete(2); echo "\n". $state; // true // or... $domain = $manager->getDomain()->findByName('example.com'); $state = $manager->getDomain()->delete($domain); echo "\n". $state; // true
Установка
Рекомендуется установка с использованием Composer.
composer require lemax10/selectel-dns-sdk
Безопасность
В случае обнаружения уязвимости в этом пакете, отправте электронное письмо по адресу vladimir@pyankov.pro. Все уязвимости безопасности будут оперативно устранены. Пожалуйста не расскрывайте уязвимости публично.
Лицензия
Распространяется по лицензии MIT License (MIT). Please see License File for more information.