tzk / taiga-php
用于简化Taiga.io API操作的PHP包装器
Requires
- php: ~5.5|~7.0
- php-curl-class/php-curl-class: ^8.3
Requires (Dev)
- kahlan/kahlan: ^3.1
Suggests
- tzk/taiga-laravel: TaigaLaravel is a package used to handle the TaigaPHP library with Laravel 5.x
README
TaigaPHP 是一个用于简化处理 Taiga.io API 的 PHP 包装器。
(如果您想使用此库与 Laravel 5.x,请查看 https://github.com/TZK-/TaigaLaravel)
安装(Composer)
TaigaPHP 已编写并针对 PHP >=5.5 和更早版本进行过测试。唯一的要求是启用 cURL 扩展。
要安装库,只需运行以下命令
composer require tzk/taiga-php
身份验证
要向 API 发送 HTTP 请求,您需要生成一个 Auth 令牌。
包装器有一个函数可以帮助您,您可以像下面的代码一样操作,或者查看 https://taigaio.github.io/taiga-doc/dist/api.html#_authentication
// The API Url $baseUrl = 'https://api.taiga.io/api/v1/'; // The credentials used for the authentification $credentials = [ 'username' => 'USERNAME', 'password' => 'PASSWORD', 'type' => 'normal' ]; echo generate_taiga_auth_token($baseUrl, $credentials);
获取 Taiga 实例
$request = TZK\Taiga\CurlRequest(); $headers = [ 'language' => 'fr', 'x-disable-pagination' => true ]; $taiga = new TZK\Taiga\Taiga($request, $baseUrl, $auth_token, $headers);
动态更改配置
您可以通过 HTTP 标头来动态更改配置。
您只需调用与您要设置的标头同名的魔法方法,并在其前面加上 'set'。
某些标头由多个由破折号分隔的单词组成(例如 Accept-Language)。
要使其正常工作,您应编写不带破折号并以驼峰格式命名的标头名称。
示例
$taiga->setAcceptLanguage('fr')->setAuthorization('Bearer ' . $auth_token);
为了简化动态更改认证令牌或语言,您可以使用在 src/config/header_shortcuts.php 中指定的快捷方式。
// In header_shortcuts.php return [ 'language' => [ 'header' => 'Accept-Language', ], 'authToken' => [ 'header' => 'Authorization', 'prefix' => 'Bearer ', ], ]; // Will produce the same as the previous example. $taiga->setLanguage('fr')->setAuthToken($token);
注册新服务
包装器基于 'Services',该服务封装 API 调用。
<?php namespace TZK\Taiga\Services; use TZK\Taiga\RestClient; use TZK\Taiga\Service; class IssueTypes extends Service { public function __construct(RestClient $taiga) { parent::__construct($taiga, 'issue-types'); } public function getList(array $param) { return $this->get(null, $param); } public function create(array $data) { return $this->post(null, [], $data); } public function getById($id) { return $this->get($id); } public function edit($id, array $data) { return $this->put($id, [], $data); } public function remove($id) { return $this->delete($id); } public function vote($id) { return $this->post(sprintf('%s/upvote', $id)); } public function bulkUpdateOrder(array $data) { return $this->post('bulk_update_order', [], $data); } }
如您所见,添加自己的方法和与 API 交互非常简单。
如果您想添加新服务,您只需在 Service 文件夹内创建一个新的类,并扩展 TZK\Taiga\Service 类。
TaigaPHP 将自动为您加载服务,您可以通过与您的服务同名的一个公共方法访问它。
示例
获取问题类型
// Access with the 'issueTypes' public method $issues = $taiga->issueTypes()->getList(['project' => $projectId]);
创建新问题
// Access with the 'issues' public method $issues = $taiga->issues()->create(['project' => $projectId, 'subject' => 'My super issue']);
支持的功能
- 应用程序
- 应用程序令牌
- 史诗
- 问题
- 问题状态
- 问题类型
- 优先级
- 项目
- 解决者
- 严重性
- 用户
- 用户故事
测试
该库已通过Kahlan进行测试。如果您想运行测试,只需执行以下命令
./vendor/bin/kahlan
目前,测试涵盖了包装器的主要功能。
贡献
TaigaPHP提供了一个很好的起始覆盖范围,但还有一些端点/测试缺失。
如果您使用此包装器,如果您发现了错误或添加了新的端点/功能或测试,请随时通过打开新的PR来分享。