anktx/cloud-dns-client

There is no license information available for the latest version (0.2.3) of this package.

Cloud.ru DNS API Client

0.2.3 2024-08-16 17:14 UTC

This package is auto-updated.

Last update: 2024-10-16 17:36:57 UTC


README

For english documentation see README.en.md

Cloud.ru DNS API client

Latest Stable Version Total Downloads

Пакет предоставляет 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;
}