digicert/constellix-v4-client

Constellix API 的 PHP SDK

此包的官方仓库似乎已不存在,因此已将其冻结。

v1.0.0 2023-10-03 10:23 UTC

This package is auto-updated.

Last update: 2024-05-03 11:26:38 UTC


README

这是一个 Constellix API 的 API 客户端库。

有关 API 的更多信息,请参阅 官方 API 文档

安装

独立

安装和使用此客户端库的最简单方法是使用 Composer。以下命令将库添加到您的应用程序并从 Packagist 安装它。

composer require tiggee/constellix-v4-client

您还需要一个 PSR-18 HTTP 客户端 实现。我们推荐 Guzzle,您也可以使用任何兼容客户端。

composer require guzzlehttp/guzzle

Laravel

如果您在 Laravel 中使用此包,则可以包含一个针对 Laravel 的特定包。这将添加一个服务提供者并使用 Laravel 的自身分页方法。您可以使用以下命令包含此包:

composer require tiggee/constellix-v4-client-laravel

有关更多详细信息,请参阅 该包的文档

入门

您需要一个 DigiCert Constellix DNS 帐户来管理 DNS 记录。您可以在 DigiCert Constellix DNS 网站上注册一个。

如果您使用 Composer,您应该使用 Composer 的自动加载来加载库

require_once 'vendor/_autoload.php';

加载库后,您只需创建客户端并设置 API 密钥和密钥。

$httpClient = new \GuzzleHttp\Client();

$client = new \Constellix\Client\Client($httpClient);
$client->setApiKey(API_KEY);
$client->setSecretKey(SECRET_KEY);

现在您可以使用客户端查询 API 并检索对象。用法在 GitHub 的 docs 目录中有记录。

整合所有内容

整合这些内容,现在是 API 的 Hello World 等价物的时间。让我们获取您的域列表。

<?php
// Load the library and dependencies
require_once 'vendor/_autoload.php';

// Create a new client and set our credentials
$httpClient = new \GuzzleHttp\Client();
$client = new \Constellix\Client\Client($client);
$client->setApiKey("Your API Key");
$client->setSecretKey("Your Secret Key");


// Create a new domain
$domain = $client->domains->create();
$domain->name = 'mydomain.example.com';
$domain->save();

// Print out our domain
echo json_encode($domain, JSON_PRETTY_PRINT);

// Now fetch a list of our domains
$domains = $client->domains->paginate();
foreach ($domains as $domain) {
    echo json_encode($domain, JSON_PRETTY_PRINT);
}

下面还有更多使用 API 客户端 SDK 的示例。

配置

您还可以使用客户端使用一些额外的配置选项,包括日志记录和指定单独的 API URL。

日志记录

您可以指定实现 PSR-3 Logger 规范的记录器,例如 MonoLog。客户端是 LoggerAwareInterface,记录器可以在构造函数中指定,也可以通过方法调用指定。

$myLogger = new \Monolog\Logger('name');
$myLogger->pushHandler(new \Monolog\Handler\StreamHandler('php://stdout', \Psr\Log\LogLevel::DEBUG));

$client = new \Constellix\Client\Client(logger: $myLogger);
$myLogger = new \Monolog\Logger('name');
$myLogger->pushHandler(new \Monolog\Handler\StreamHandler('php://stdout', \Psr\Log\LogLevel::DEBUG));

$client->setLogger($myLogger);

如果没有指定记录器,则将使用一个什么也不做的 null 记录器。

自定义 HTTP 客户端

如果您需要在您的应用程序中为 HTTP 请求进行额外配置,例如指定代理服务器或如果您想要使用自己的 HTTP 客户端匹配 PSR-18 HTTP 客户端 规范。

您可以使用构造函数或方法调用指定客户端。

$myClient = new \GuzzleHttp\Client([
    'proxy' => 'https://:8123'
]);
$client = new \Constellix\Client\Client(client: $myClient);
$myClient = new \GuzzleHttp\Client([
    'proxy' => 'https://:8123'
]);
$client->setHttpClient($myClient);

示例

库方法的完整文档在 docs 文件夹中。

管理者

管理者用于管理您对 API 上资源的访问,包括在 API 中创建新资源以及从 API 获取现有资源。这些可以通过客户端的属性访问。

// Fetch our manager
$domainsManager = $client->domains;
// Ask our manager for the domain
$domain = $domainsManager->get(1234);

管理者也用于创建新对象。

// Create a new domain
$domain = $client->domains->create();
$domain->name = 'example.com';

// Save the domain
$domain->save();

直到您调用 $domain->save(),域才会在 API 中保存。

可以使用管理器的 paginate() 方法检索多个对象。您可以指定页码和每页的项目数。

// Return the 4th page of results with the default page size
$client->domains->paginate(4);

// Return the first page of 50 results
$client->domains->paginate(1, 50);

模型

模型本身遵循 Active Record 模式。可以更新属性并在模型上调用 save() 来更新 API。

// Fetch an existing domain with the ID 1234
$domain = $client->domains->get(1234);
// Update the gtdEnabled property
$domain->gtdEnabled = true;
// Save the domain object on the API
$domain->save();

您可以通过调用对象的delete()方法来删除对象

$domain = $client->domains->get(1234);
$domain->delete();

创建域名和记录

此示例创建一个新的域名并将其记录添加到其中。

// Include composer libraries
require_once 'vendor/_autoload.php';

// Create the client
$client = new \Constellix\Client\Client;
$client->setApiKey(API_KEY);
$client->setSecretKey(SECRET_KEY);

// Create the domain
$domain = $client->domains->create();
$domain->name = 'example.com';
$domain->save();

// Create a record on the domain
$record = $domain->records->create();
$record->type = \Constellix\Client\Enums\RecordType::A();
$record->name = 'www';

// Create a value for the record and assign it to the record
$value = new \Constellix\Client\Models\Helpers\RecordValues\Standard();
$value->value = '192.0.2.1';
$record->value = $value;

// Save the record
$record->save();

// Get a list of all domains
$domains = $client->domains->paginate();
foreach ($domains as $domain) {
    print_r(json_encode($domain, JSON_PRETTY_PRINT));
}

向记录添加多个值

大多数记录类型都支持多个值。您可以通过设置值属性为一个值数组的值,或者使用addValue()方法来添加这些值。

$domain = $client->domains->get(1234);
$record = $domain->records->create();
$record->type = \Constellix\Client\Enums\RecordType::A();
$record->name = 'www';

// Create some values
$newValue1 = new \Constellix\Client\Models\Helpers\RecordValues\Standard();
$newValue1->value = '192.0.2.1';

$newValue2 = new \Constellix\Client\Models\Helpers\RecordValues\Standard();
$newValue2->value = '192.0.2.2';

// Assign an array to the value property
$record->value = [
    $newValue1,
    $newValue2,
];

// Add a new value using the addValue() method
$newValue3 = new \Constellix\Client\Models\Helpers\RecordValues\Standard();
$newValue3->value = '192.0.2.3';

$record->addValue($newValue3);

// Save the record to persist these changes
$record->save();

某些记录类型(A、AAAA、CNAME和ANAME)可以使用不同的值类型,包括Failover、RoundRobinFailover和Pools。您可以通过创建正确类型的值对象来分配这些值。有关所有这些类的更多详细信息,请参阅docs文件夹。

搜索域名

您可以通过将名称传递到域名分页方法上的filter参数来搜索与通配符(如*example.commydomain.*)匹配的域名。

$client->domains->paginate(filters: ['name' => '*example.com']);

这将仅返回与您的过滤器匹配的域名。

检索的域名对象是懒加载的,因此仅获取ID和名称。如果您尝试访问域名的任何其他属性,则将从API获取完整的域名对象。

贡献

如果您想为此SDK做出贡献,我们欢迎pull请求。我们使用以下标准

  • PHP 8.0 - 我们将继续支持8.0直到至少2023年11月26日
  • PSR12编码标准 - 使用PHP CodeSniffer强制执行
  • 单元测试 - 使用PHPUnit实现100%测试覆盖率
  • 静态分析 - PHPStan级别8
  • 文档 - PHP Documentor

所有pull请求都必须满足这些要求。

许可证

MIT许可证(MIT)

版权所有(c)2020 Constellix,Tiggee LLC的子公司。

特此免费授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的任何人,在软件上不受限制地处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,以及允许向软件提供副本的个人这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论这些责任是基于合同、侵权或其他原因而引起的,无论是源于、因之而产生还是与软件或软件的使用或其他交易有关。