juanparati/rdap-lib

PHP RDAP 客户端库

2.1 2021-06-22 12:04 UTC

This package is auto-updated.

Last update: 2024-09-22 20:18:21 UTC


README

RDAPLib

关于

RDAPLib 是一个注册数据访问协议 (RDAP) 客户端库,可以查询并将结果转换为模型、数组或标准对象 (stdObject)。

此库使用 Guzzle 作为默认 HTTP 客户端,但也可以注入符合 PSR-18 的任何自定义 HTTP 客户端。

安装

composer require juanparati/rdap-lib "^2.0"

如果您不想注入符合 PSR-18 的客户端,则可能还需要 Guzzle 7。

composer require guzzlehttp/guzzle "^7.0.1"

用法

基本示例

$rdap = new \Juanparati\RDAPLib\RDAPClient();

$ip        = $rdap->ipLookup('94.234.38.5');    
$domain    = $rdap->domainLookup('google.com');
$tld       = $rdap->tldLookup('io');
$entity    = $rdap->entityLookup('APL7-ARIN')
$as        = $rdap->asLookup(1);
$registrar = $rdap->registrarLookup(1);

输出格式

RDAPClient 将结果映射到模型,但也可以使用以下类型返回结果

  • RAW_OUTPUT (JSON 字符串)
  • ARRAY_OUTPUT (嵌套数组)
  • OBJECT_OUTPUT (stdClass)
  • MODEL_OUTPUT

"lookups" 方法接受一个次要参数,用于指定格式。

示例

 $rdap = new \Juanparati\RDAPLib\RDAPClient();
    
 $ip     = $rdap->ipLookup('94.234.38.5', \Juanparati\RDAPLib\RDAPClient\RAW_OUTPUT);    
 $domain = $rdap->domainLookup('google.com', \Juanparati\RDAPLib\RDAPClient\ARRAY_OUTPUT);
 $tld    = $rdap->tldLookup('io', \Juanparati\RDAPLib\RDAPClient\OBJECT_OUTPUT);
 $entity = $rdap->entityLookup('APL7-ARIN')   // Default output is MODEL_OUTPUT

模型格式

模型格式适用于需要数据访问器或额外参数的情况。RDAPClient 提供了默认模型,这些模型可以被替换。这些模型基于 RFC-7483

例如,"vcardArray" 的默认方法提供了一个可以解析 jCard 格式的函数。

示例

$rdap = new \Juanparati\RDAPLib\RDAPClient();

$domain = $rdap->domainLookup('google.com');
$contact = $rdap->entities[0]->vcardArray->parseCard();

链接模型有另一个可以生成 HTML 链接的方法

$rdap = new \Juanparati\RDAPLib\RDAPClient();

$domain = $rdap->domainLookup('google.com');
echo $rdap->links[0]->asLink();

您可以将当前模型替换为自定义模型。为了实现这一点,需要一个自定义的 ModelMapper。

示例

// 1. Define our custom model that extends the default one.
class MyIpAddressModel extends \Juanparati\RDAPLib\Models\IpAddressModel {
    
    /**
     * Our new method
     */
    public function getFirstIpV4Ip() : ?string {
        return $this->v4[0] ?? null;
    }
}

// 2. Instantiate a custom mapper with the model replacement.   
$mapper = new \Juanparati\RDAPLib\ModelMapper([         
    'ipAddresses'  => \Juanparati\RDAPLib\Models\IpAddressModel::class,            
]);

// 3. Instantiate the client injecting our custom mapper
$rdap = new \Juanparati\RDAPLib\RDAPClient([], null, null, $mapper);

使用不同的端点

默认情况下,RDAPLib 根据查找类型使用以下端点

'ip'        => 'https://rdap.db.ripe.net/ip/',
'domain'    => 'https://rdap.org/domain/',
'tld'       => 'https://root.rdap.org/domain/',
'autnum'    => 'https://rdap.db.ripe.net/autnum/',
'entity'    => 'https://rdap.arin.net/registry/entity/',
'registrar' => 'https://registrars.rdap.org/entity/',

可以通过将新的端点传递给 RDAPClient 构造函数的第一个参数来替换端点。

示例

$rdap = new \Juanparati\RDAPLib\RDAPClient(['ip' => 'https://rdap.org/ip/']);

使用自定义 HTTP 客户端

RDAPLib 允许注入符合 PSR-18 的自定义 HTTP 客户端。客户端还需要一个消息接口 PSR-7

示例

 $rdap = new \Juanparati\RDAPLib\RDAPClient(
    [],
    $myCompatiblePSR18HTTPClient,       // Psr\Http\Client\ClientInterface
    $myCompatiblePSR7MessageInterface   // Psr\Http\Message\RequestFactoryInterface
 );

支持者