For english documentation see README.en.md
Пакет предоставляет 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;
}