anktx / cloud-dns-client
Cloud.ru DNS API Client
Requires
- php: ^8.2
- psr/http-client: ^1.0
- psr/http-factory: ^1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.62
- infection/infection: ^0.29
- kriswallsmith/buzz: ^1.2
- nyholm/psr7: ^1.8
- phpstan/phpstan: ^1.11
- phpunit/phpunit: ^10.5
- vlucas/phpdotenv: v5.6
README
For english documentation see README.en.md
Cloud.ru DNS API client
Пакет предоставляет PHP-обёртку для взаимодействия с DNS API Cloud.ru.
Требования
- PHP 8.2 или выше.
Установка
composer require anktx/cloud-dns-client
Общие указания
Для ваимодействия Cloud.ru DNS API,
необходимо создать экземпляр класса CloudDnsApi
. Это класс требует реализацию интерфейса
PSR-18 ClientInterface
и HttpAdapter
,
который в свою очередь требует реализации PSR-17 RequestFactoryInterface
и StreamFactoryInterface
.
Вы можете использовать пакеты kriswallsmith/buzz и nyholm/psr7 для этого:
composer require kriswallsmith/buzz nyholm/psr7
Вот как можно создать экзмепляр CloudDnsApi
:
use Anktx\Cloud\Dns\Client\Client\HttpAdapter; use Anktx\Cloud\Dns\Client\CloudDnsApi; use Buzz\Client\Curl; use Nyholm\Psr7\Factory\Psr17Factory; // Зависимости $psr17Factory = new Psr17Factory(); $httpAdapter = new HttpAdapter($psr17Factory, $psr17Factory); $httpClient = new Curl($psr17Factory); // API $api = new CloudDnsApi( client: $httpClient, httpAdapter: $httpAdapter, );
Сначала получите токен аутентификации и передате его в HttpAdapter
:
$token = $api->authenticate('CLIENT_ID', 'CLIENT_SECRET'); $httpAdapter->setToken($token);
Теперь вы можете использовать экземпляр $api
для взаимодействия с Cloud.ru DNS API.
// Получение зон $api->getZones('PROJECT_ID'); // Создание зоны $api->createZone('New zone', 'PROJECT_ID');
Результат будет либо экземпляром FailResult
(в случае ошибки), либо объектом соответствующего типа (в случае успеха). Например:
// Результат - коллекция объектов `Record` $records = $api->getRecords('ZONE_ID'); foreach ($records as $record) { echo 'name: ' . $record->name . ' ttl: ' . $record->ttl . \PHP_EOL; }