automattic/domain-services-client

Automattic 域服务 API 的客户端库。


README

客户端

Automattic 域服务的客户端代码。

目的

此库用于将 PHP 客户端连接到 Automattic 的域名管理服务。目前仅适用于由 Automattic 托管的应用程序,不适用于其他用例。

安装与使用

要求

  • PHP 7.4 及更高版本。(也应与 PHP 8.0 兼容。)
  • 还需要一个与 PSR-18 的 ClientInterface 实现兼容的 Http 客户端。

将库添加到您的代码中

如上所述的要求中提到,该包期望一个与 PSR-18 兼容的 HTTP 客户端。这里有一份可用的具有该实现的 HTTP 客户端列表 在此处。以下为 Guzzle 6 和 Guzzle 7 的示例说明。

Guzzle 7

  • Guzzle 7 实现了 PSR-18 和 PSR-17 标准,这使得它可以直接与客户端库一起使用。
  • 要需要此库和 Guzzle 7(如果尚未安装),完整的命令应该类似于以下内容
    composer require automattic/domain-services-client guzzlehttp/guzzle
    
  • 完成此操作后,请确保在您的代码中需要 composer 的自动加载文件 vendor/autoload.php,如果尚未需要。
  • 您可以在 这里查看代码示例

Guzzle 6

  • Guzzle 6 没有实现 PSR-18 的 ClientInterface,因此您将需要一个适配器。最常用的适配器之一是 php-http/guzzle6-adapter 包。
  • Guzzle 6 还实现了 PSR-17 HTTP Factories。有很多包可以选择,但在这个示例中,我们将使用 http-interop/http-factory-guzzle
  • 完整的命令应该类似于以下内容
    composer require automattic/domain-services-client php-http/guzzle6-adapter http-interop/http-factory-guzzle
    
  • 完成此操作后,请确保在您的代码中需要 composer 的自动加载文件 vendor/autoload.php,如果尚未需要。
  • 您可以在 这里查看代码示例

入门

请按照 安装程序 进行操作,然后运行以下命令

<?php

// Change the path as necessary
require_once 'vendor/autoload.php';

use Automattic\Domain_Services_Client\{Api, Command, Configuration, Entity, Response};

// Set the domain to use
$domain_name = new Entity\Domain_Name( 'a8ctest.com' );

// Set up a new domain contact
$domain_contacts = new Entity\Domain_Contacts(
	new Entity\Domain_Contact(
		new Entity\Contact_Information(
			'John',
			'Doe',
			'',
			'123 Main St',
			'',
			'23601',
			'Utopia',
			'ST',
			'CC',
			'john.doe@example.com',
			'+1.7575551234',
			''
		)
	)
);

// Set up the Contacts\Set command
$command = new Command\Domain\Set\Contacts( $domain_name, $domain_contacts );

// Create an optional client transaction ID (useful for finding related log entries)
$client_transaction_id = 'client_tx_id_example';

// Configure API key authorization: apiKey
$config = Configuration::get_default_configuration()
    ->set_api_key( 'X-DSAPI-KEY', 'your-key-here' )
    ->set_api_key( 'X-DSAPI-USER', 'your-user-here' );

// Using Guzzle 7
$http_client = new GuzzleHttp\Client();
$http_factory = new GuzzleHttp\Psr7\HttpFactory();

$request_factory = new Request\Factory( $http_factory, $http_factory );
$response_factory = new Response\Factory();

$api = new Api( $config, $request_factory, $response_factory, $http_client );

try {
	// Make the call to the endpoint
	/** @var Response\Domain\Set\Contacts $response */
	$response = $api->post( $command, $client_transaction_id );

	// Extract some data from the resopnse
	echo "Status: " . $response->get_status() . "\n";
	echo "Status description: " . $response->get_status_description() . "\n";
	echo "New contact ID: " . $response->get_contacts()->get_owner()->get_contact_id()->get_provider_contact_id() . "\n";
} catch (Exception $e) {
	echo 'Exception when calling Domain_Set_Contacts: ', $e->getMessage(), PHP_EOL;
}

运行单元测试

通过 composer 安装依赖项,请按照 上述说明 进行操作

$ composer install

然后运行单元测试

$ ./vendor/bin/phpunit -c ./test/phpunit.xml

许可证

Automattic 域服务客户端的许可证为 GNU 通用公共许可证 v2(或更高版本)