acl-solution/rh-dependency

v1.0.11 2022-07-10 20:11 UTC

This package is auto-updated.

Last update: 2024-09-11 00:35:41 UTC


README

私有依赖项

安装

此包通过Composer安装。您可以使用以下命令将其添加到项目中。

composer require acl-solution/rh-dependency
composer update

WHMCS使用

此API客户端通过简单的OO包装封装了WHMCS。

首先,您需要使用您的WHMCS安装详情创建一个客户端实例

$api = new \ACL\RH\Dependency\Provider('https://example.com/whmcs/installation/url/', 'myusername', 'mypassword');

注意URL末尾的/。用户名和密码是具有“API访问”权限的用户凭据。您可以使用主管理员用户,但出于安全考虑,建议为每个项目创建一个特殊的API用户。

创建客户端后,您可以开始发送请求。方法对应于WHMCS API中的操作名称,其他属性可以以数组形式提交。

例如,要执行“AcceptOrder”操作,可以使用以下代码。

try {
    $result = $api->acceptOrder([
        'orderid' => 123,
        'serverid' => 456,
        //...
    ]);
} catch (\HansAdema\WhmcsSdk\RequestException $e) {
    echo "Error connecting to WHMCS: ".$e->getMessage();
} catch (\HansAdema\WhmcsSdk\ResponseException $e) {
    echo "There was an issue with your API call: ".$e->getMessage();
}

请注意,这里使用了两种不同类型的异常。当连接到您的WHMCS安装有问题时,将使用RequestException,例如,因为安装已关闭或凭据不正确。当API结果不成功时,将抛出ResponseException,例如,由于缺少或无效的方法参数。

快速入门

require_once __DIR__ . '/vendor/autoload.php';

use ipinfo\ipinfo\IPinfo;

$access_token = '123456789abc';
$client = new IPinfo($access_token);
$ip_address = '216.239.36.21';
$details = $client->getDetails($ip_address);

$details->city; // Emeryville
$details->loc; // 37.8342,-122.2900

使用

IPinfo->getDetails()方法接受一个IP地址作为可选的、位置参数。如果没有指定IP地址,API将返回请求的IP地址的数据。

$client = new IPinfo();
$ip_address = '216.239.36.21';
$details = $client->getDetails($ip_address);
$details->city; // Emeryville
$details->loc; // 37.8342,-122.2900

身份验证

IPinfo库可以使用您的IPinfo API令牌进行身份验证,该令牌作为位置参数传递。它也可以在没有身份验证令牌的情况下工作,但功能更为有限。

$access_token = '123456789abc';
$client = new IPinfo($access_token);

详细信息数据

IPinfo->getDetails()将返回一个包含所有列出的字段(IPinfo开发者文档中有一些小的添加)的Details对象。可以直接访问属性。

$details->hostname; // cpe-104-175-221-247.socal.res.rr.com

国家名称

Details->country_name将返回国家名称,如countries.json文件提供。有关更改该文件以用于非英语语言的说明,请参阅下面。Details->country将仍然返回国家代码。

$details->country; // US
$details->country_name; // United States

经纬度

Details->latitudeDetails->longitude将分别以字符串形式返回纬度和经度。Details->loc将仍然返回包含两个值的复合字符串。

$details->loc; // 34.0293,-118.3570
$details->latitude; // 34.0293
$details->longitude; // -118.3570

访问所有属性

Details->all将返回所有详细信息数据作为字典。

$details->all;
/*
    {
    'asn': {  'asn': 'AS20001',
               'domain': 'twcable.com',
               'name': 'Time Warner Cable Internet LLC',
               'route': '104.172.0.0/14',
               'type': 'isp'},
    'city': 'Los Angeles',
    'company': {   'domain': 'twcable.com',
                   'name': 'Time Warner Cable Internet LLC',
                   'type': 'isp'},
    'country': 'US',
    'country_name': 'United States',
    'hostname': 'cpe-104-175-221-247.socal.res.rr.com',
    'ip': '104.175.221.247',
    'loc': '34.0293,-118.3570',
    'latitude': '34.0293',
    'longitude': '-118.3570',
    'phone': '323',
    'postal': '90016',
    'region': 'California'
    }
*/

缓存

默认通过sabre/cache库提供内存中缓存Details数据。已添加LRU(最近最少使用)缓存失效功能到默认TTL(生存时间)。这意味着值将被缓存指定的时间段;如果缓存的最大大小达到,则将根据需要使缓存值失效,从最旧的缓存值开始。

修改缓存选项

默认缓存TTL和最大大小可以通过在$settings参数数组中设置值来更改。

  • 默认最大缓存大小:4096(建议使用2的倍数以提高效率)
  • 默认TTL:24小时(以秒为单位)
$access_token = '123456789abc';
$settings = ['cache_maxsize' => 30, 'cache_ttl' => 128];
$client = new IPinfo($access_token, $settings);

使用不同的缓存

可以通过创建一个继承自CacheInterface类的子类来使用自定义缓存,并将这个类通过cache关键字参数传递给处理对象。请注意,这被称为策略模式

$access_token = '123456789abc';
$settings = ['cache' => $my_fancy_custom_cache];
$client = new IPinfo($access_token, $settings);

禁用缓存

您可以通过在设置中传递一个cache_disabled键来禁用缓存。

$access_token = '123456789abc';
$settings = ['cache_disabled' => true];
$client = new IPinfo($access_token, $settings);

覆盖HTTP客户端选项

IPinfo客户端构造函数接受一个timeout键,它是请求的超时时间(秒)。

为了提供全面灵活性,接受一个guzzle_opts键,该键接受一个关联数组,该数组在Guzzle请求选项中有描述。这里设置的选项将覆盖IPinfo客户端内部设置的任何自定义设置,包括头信息。

批量操作

一次查找一个IP可能会很慢。虽然可以在客户端并发执行,但IPinfo支持一个批量端点,允许您将IP分组在一起,并让我们为您批量获取这些IP的详细信息。

$access_token = '123456789abc';
$client = new IPinfo($access_token);
$ips = ['1.1.1.1', '8.8.8.8', '1.2.3.4/country'];
$results = $client->getBatchDetails($ips);
echo $results['1.2.3.4/country']; // AU
var_dump($results['1.1.1.1']);
var_dump($results['8.8.8.8']);

输入大小没有限制,因为接口会在后台为您分块操作。

有关更多信息和使用限制,请参阅官方文档

国际化

在查找IP地址时,响应对象包含一个Details->country_name属性,该属性包含基于美国英语的国家名称。通过在创建IPinfo对象时设置countries_file关键字参数,可以返回其他语言的国家名称。

文件必须是具有以下结构的.json文件

{
 "BD": "Bangladesh",
 "BE": "Belgium",
 "BF": "Burkina Faso",
 "BG": "Bulgaria"
 ...
}

可用方法

本库中可用的方法

- 获取用户IP

Ip::get();

返回 (string|false) → 用户IP或false

- 验证IP

Ip::validate($ip);

返回 (boolean)

快速入门

使用Composer与该库结合

require __DIR__ . '/vendor/autoload.php';

use ACL\RH\Dependency\Ip;

使用

该库的使用示例

- 获取用户IP

Ip::get();

- 验证IP

$ip = Ip::get();

Ip::validate($ip);