anktx / cloud-dns-client
此包的最新版本(0.2.3)没有可用的许可证信息。
Cloud.ru DNS API 客户端
0.2.3
2024-08-16 17:14 UTC
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
英文文档请参阅 README.en.md
Cloud.ru DNS API 客户端
本包提供 PHP 封装以与 Cloud.ru DNS API 进行交互。
要求
- 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; }