tzk/taiga-php

该包已被弃用且不再维护。未建议替代包。

用于简化Taiga.io API操作的PHP包装器

v2.1.0 2018-08-25 13:02 UTC

This package is auto-updated.

Last update: 2021-06-09 13:55:30 UTC


README

Build Status Latest Stable Version Total Downloads License

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来分享。