mxtoolbox-php / api
用于MxToolbox API的PHP封装,旨在提供原始API中所有可用的功能。
Requires
- php: >=7.0.0
- guzzlehttp/guzzle: ^6.1
- jms/serializer: ^1.1
Requires (Dev)
- phpunit/phpunit: ~4.0
README
用于与MxToolbox API一起使用的PHP封装。
受Michael Roterman的TMDB PHP API封装(https://github.com/php-tmdb/api)的启发
注意:可能缺少一些响应类型(主要是警告)。这是由于MxToolbox缺乏关于这些对象中可用属性的文档。如果您能在这方面提供一些信息,请告诉我们。
安装
您可以通过composer使用以下任一方式安装:
composer require mxtoolbox-php/api
或通过在您的require块中添加以下内容:
"mxtoolbox-php/api": "~1.3"
如果您是composer新手,请通过getcomposer.org进行安装。安装后,在项目根目录中创建一个名为composer.json
的文件,并粘贴以下内容:
{
"require": {
"mxtoolbox-php/api": "~1.3"
}
}
然后在您的项目根目录的终端(或cmd)中运行composer install
以下载依赖项。接下来,包括composers的自动加载器,这样您就不必要求每个类
require_once dirname(__DIR__) . '/vendor/autoload.php';
入门
首先构建您的MxToolbox客户端
$apiToken = new \Mxtb\ApiToken('your-api-key'); $mxtb = new \Mxtb\MxToolbox($apiToken);
如果您想在开发期间使用MxToolbox提供的“example.com”测试域,可以向ApiToken构造函数传递一个空字符串或将其留空。
默认情况下,封装器设置为使用HTTPS。要强制使用HTTP,将false作为可选的第二个参数传递
$mxtb = new \Mxtb\MxToolbox($apiToken, false);
使用API - 查找方法
我们已尽力使此包的使用尽可能直观,因此您应该能够在大多数情况下猜测要使用的方法。
首先,让我们为要使用的API方法(查找或监控)创建一个存储库
$repository = new Mxtb\Repository\Lookup\NetworkRepository($mxtb);
现在我们可以决定要使用哪个查找。例如,如果我们想要查找域的黑名单
$blacklist = $repository->getBlacklist('github.com'); //To see what's contained in the response model, you could do something like below //echo '<pre>'; //var_dump($blacklist);
从这里开始,大部分应该是直观的。如果MxToolbox API响应JSON中有一个UID字段,则应假设关联的模型有一个getUid()方法。例如
$uid = $blacklist->getUid();
查找 - 请求相关查找
您可以从相关的查找集合中快速发送新的请求。例如
$related = $blacklist->getRelatedLookups(); $newLookup = $related->get(1)->getLookup($mxtb); //$newLookup now contains an entirely new result set depending on what the command was in the related //lookup at index 1 in RelatedLookup collection
使用API - 监控方法
使用监控存储库从MxToolbox检索您的监控数据
$repository = new Mxtb\Repository\Monitor\MonitorRepository($mxtb);
MonitorRepository构造函数将收集有关您的存储库的信息并将其存储起来,这样您可以安全地处理数据
$all = $repository->all(); // Returns a collection of all your monitors $specific = $repository->withUid('some-UID-here'); // If you know a UID
监控 - 创建/删除
在提交任何更改到MxToolbox之前,您可以在存储库中安全地创建和删除监控项
$repository->create('dns', 'github.com'); $repository->delete($repository->all()[2]); $repository->deleteByUid('some-UID-here');
如果您想清除您所做的更改,请调用clear方法
$repository->clear();
在保存任何内容之前,您可以随意更改。一旦您满意,只需保存您所做的更改即可
$repository->save();
所有更改将保存到您的MxToolbox账户中,仓库中的集合将重新加载以反映更改,创建/删除队列将被清空。
在创建/删除时,您可以通过将最后一个参数传递为true来强制立即更改。这将立即执行创建/删除操作,而不会将任何内容添加到队列中。集合将重新加载以反映更改。
$repository->create('dns', 'github.com', true);
如果出于任何原因,您想重新加载仓库中监视器的集合,可以使用reload方法
$repository->reload();
监视器 - 过滤器
您可以使用与查找相同的技巧来过滤您希望使用的监视器
$onlyBlacklists = $repository->all()->withCommand('blacklist'); $onlyWithUid = $repository->all()->withUid('some-UID-here');
当然,您可以创建自己的过滤器来使用。如果您创建了一个有用的过滤器,请随时请求将其(附有全部信用)包含在此包中!
监视器 - 历史
您可以使用Mxtb\Repository\Monitor\HistoryRepository将监视器的历史记录收集到集合中。示例用法
$monitorRepo = new MonitorRepository($mxtb); $historyRepo = new HistoryRepository($mxtb, $m->all()[0]); $history = $historyRepo->all();
过滤集合
多亏了GenericCollection类,您可以轻松地过滤您收到的集合(例如通过、失败、监视器等)。过滤器方法接受一个自定义闭包,但我们已经在集合中包含了一些常见的过滤器。以下是一些示例
//Only collect the Passed objects that do not have a null or empty string DelistURL $passed = $blacklist->getPassed()->delistUrlNotNullOrEmpty(); //Only collect Passed objects that do not have a null DelistURL, but accept empty strings $passed = $blacklist->getPassed()->delistUrlNotNull(); //Only collect Passed objects where the Name is 'Example Name' $passed = $blacklist->getPassed()->filter(function($key, $value) { if ($value->getName() == 'Example Name') { return true; } }); // Monitor collections $onlyBlacklists = $repository->all()->withCommand('blacklist'); $onlyWithUid = $repository->all()->withUid('some-UID-here');
排序集合
您可以使用与PHP标准uasort函数相同的方法轻松地对集合进行排序,该函数附加到实际集合上
$passed->sort(function($a, $b) { if ($a->getId() == $b->getId()) { return 0; } return ($a->getId() < $b->getId()) ? -1 : 1; }
工作示例
namespace TestingMxtb; use Mxtb\ApiToken; use Mxtb\MxToolbox; use Mxtb\Repository\Lookup\NetworkRepository; require dirname(__DIR__) . '/vendor/autoload.php'; $mxtb = new MxToolbox(new ApiToken(), false); $repository = new NetworkRepository($mxtb); $blacklist = $repository->getBlacklist('example.com'); $passed = $blacklist->getPassed(); echo '<pre>'; var_dump($passed);
贡献
有关详细信息,请参阅CONTRIBUTING。
致谢
许可
有关更多信息,请参阅LICENSE。