anktx/cloud-dns-client

此包的最新版本(0.2.3)没有可用的许可证信息。

Cloud.ru DNS API 客户端

0.2.3 2024-08-16 17:14 UTC

This package is auto-updated.

Last update: 2024-09-16 17:34:37 UTC


README

英文文档请参阅 README.en.md

Cloud.ru DNS API 客户端

Latest Stable Version Total Downloads

本包提供 PHP 封装以与 Cloud.ru DNS API 进行交互。

要求

  • PHP 8.2 或更高版本。

安装

composer require anktx/cloud-dns-client

一般说明

要使用 Cloud.ru DNS API,需要创建 CloudDnsApi 类的实例。此类需要一个实现 PSR-18ClientInterfaceHttpAdapter 接口,而后者又需要实现 PSR-17RequestFactoryInterfaceStreamFactoryInterface 接口。

您可以使用 kriswallsmith/buzznyholm/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;
}