r-baker/3taps-php-client

此软件包已被废弃,不再维护。没有建议的替代软件包。

3taps数据共享API的客户端库(https://3taps.com)。基于Guzzle构建。

dev-master 2015-09-08 07:24 UTC

This package is not auto-updated.

Last update: 2020-02-21 15:54:11 UTC


README

A PHP 5.3+ client for working with the 3taps APIs. Build Status

功能

  • 基于令人惊叹的 Guzzle HTTP客户端框架。
  • 提供对参考、搜索和轮询API的单独客户端。
  • 结果迭代器以自动处理结果分页、令牌、层和锚点。
  • 使用 Composer 或下载 zip 将其包含到项目中。
  • 已测试PHP 5.3、5.4 & 5.5

使用方法

使用Composer安装

composer.phar require r-baker/3taps-php-client

创建服务实例

use Rbaker\ThreeTaps\ThreeTapsService;

$service = ThreeTapsService::factory(array(
	'auth_token' => 'your-private-auth-token'
));

创建API客户端实例(例如参考API)

$referenceClient = $service->get('reference');

发起API请求

$categories = $referenceClient->getCategories();

API服务客户端

支持三个API(如3taps API文档中定义)的所有方法和参数。

要使用API客户端,如上面的示例所示,您必须从服务实例中实例化相关客户端实例。然后可以在客户端实例上调用API方法。

如果需要,可以将参数数组传递给API方法调用的第二个参数。PHP客户端将确保提供所有必需参数,但请务必查阅API文档以了解所有可选参数。

参考

参考API客户端支持以下方法

3Taps方法名称 PHP客户端方法名称
sources $referenceClient->getSources()
category_groups $referenceClient->getCategoryGroups()
categories $referenceClient->getCategories()
locations $referenceClient->getLocations()
location lookups $referenceClient->locationLookup()

示例

$referenceClient = $service->get('reference');
$data = $referenceClient->locationLookup(array(
	'code'=>'USA-AL'
));

搜索

搜索API客户端支持以下方法

3Taps方法名称 PHP客户端方法名称
search $searchClient->search()
count mode $searchClient->count()

示例

$searchClient = $service->get('search');
$iterator = $searchClient->getIterator('search', array(
	'category_group' => 'JJJJ'
));
$iterator->setLimit(30);
// Total number of (unlimited) results matching our request
echo $iterator->getNumMatches();
// grab results
print_r($iterator->toArray());

轮询

轮询API客户端支持以下方法

3Taps方法名称 PHP客户端方法名称
anchor $pollingClient->getAnchor()
poll $pollingClient->poll()

请参阅以下完整示例。

结果迭代器

结果迭代器自动实现了处理结果页所需的大部分逻辑。在3taps搜索和轮询API的情况下,页码锚点层级参数会被自动处理并用于后续请求。这允许你简单地设置所需的记录数,迭代器将尝试(如果需要)调用尽可能多的API调用以返回你的结果集。

完整示例

从轮询API获取锚点,并对纽约市过去3小时内发布的所有与工作相关的帖子进行轮询。

<?php

require 'vendor/autoload.php';

use Rbaker\ThreeTaps\ThreeTapsService;

// create service instance
$service = ThreeTapsService::factory(array(
	'auth_token' => 'your-private-auth-token'
));
$pollingClient = $service->get('polling');

// retrieve anchor
$anchor = $pollingClient->getAnchor(array(
	'timestamp' => strtotime('-3 hours')
));

// retrieve results
$iterator = $pollingClient->getIterator('poll', array(
	'category_group' => 'JJJJ',
	'location.city' => 'USA-NYM-NEY',
	'anchor' => $anchor['anchor']
));

// iterate!
foreach($iterator as $result) {
	print_r($result);
}

// grab the anchor to use for the next poll request
$nextAnchor = $iterator->getAnchor();

测试

该项目为每个API客户端包含一个基本的PHPUnit测试套件。

  1. 安装PHPUnit php composer.phar install --dev
  2. 务必将你的自己的auth_token添加到phpunit.xml配置文件中
  3. 运行测试套件 ./vendor/bin/phpunit