用于MxToolbox API的PHP封装,旨在提供原始API中所有可用的功能。

1.3 2016-01-28 15:49 UTC

This package is auto-updated.

Last update: 2021-10-11 21:29:16 UTC


README

License Build Status

用于与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