neoption/redmine-api

Redmine API 客户端

v1.6.0 2018-08-30 03:09 UTC

README

一个使用 PHP5 编写的简单面向对象的 Redmine API 包装器。

使用 Redmine API

特性

  • 遵循 PSR-0 规范和编码标准:自动加载友好
  • API 入口点实现状态
  • OK 附件
  • OK 组
  • OK 自定义字段
  • OK 问题
  • OK 问题类别
  • OK 问题优先级
  • NOK 问题关系 - 仅部分实现
  • OK 问题状态
  • OK 新闻
  • OK 项目
  • OK 项目成员
  • OK 查询
  • OK 角色
  • OK 时间条目
  • OK 时间条目活动
  • OK 跟踪器
  • OK 用户
  • OK 版本
  • OK 维基

待办事项

限制

Redmine 缺少一些 API 以实现数据的完整远程管理

解决此问题的可能方法是为缺少的入口点创建额外的 API。参见现有努力: https://github.com/rschobbert/redmine-miss-api

要求

  • PHP >= 5.4
  • PHP cURL 扩展
  • PHP SimpleXML 扩展
  • PHP JSON 扩展
  • PHPUnit >= 4.0(可选)以运行测试套件
  • 为您的 Redmine 项目启用“启用 REST Web 服务”(/settings/edit?tab=authentication)
  • 然后在您的个人资料页面中获取您的 API 访问密钥:/my/account
  • 或使用您的 用户名和密码

安装

Composer

Composer 用户可以简单地运行

$ php composer.phar require kbsali/redmine-api:~1.0

在其项目的根目录下。要使用该库,在将使用 Redmine 类的脚本中包含 Composer 的 vendor/autoload.php

例如,

<?php
// This file is generated by Composer
require_once 'vendor/autoload.php';
$client = new Redmine\Client('http://redmine.example.com', 'username', 'password');

手册

还可以自行安装库,无论是本地到项目还是全局;例如,在 /usr/share/php 中。

首先,在某个位置下载并解压库。例如,以下步骤将库 v1.5.1 解压到 vendor/php-redmine-api-1.5.1 目录

$ mkdir vendor
$ wget -q https://github.com/kbsali/php-redmine-api/archive/v1.5.1.tar.gz
$ tar -xf v1.5.1.tar.gz -C vendor/
$ rm v1.5.1.tar.gz

现在,在所有将使用 Redmine 类的脚本中,包含 php-redmine-api 目录中的 lib/autoload.php 文件。例如,

<?php
// This file ships with php-redmine-api
require 'vendor/php-redmine-api-1.5.1/lib/autoload.php';
$client = new Redmine\Client('http://redmine.example.com', 'username', 'password');

运行测试套件

如果您已安装 PHPUnit >= 4.0,您可以通过在 php-redmine-api 目录中运行 phpunit 来运行测试套件,以确保库在您的系统上可以正常工作。例如,

$ phpunit
PHPUnit 4.3.1 by Sebastian Bergmann.

Configuration read from ./phpunit.xml.dist

...............................................................  63 / 276 ( 22%)
............................................................... 126 / 276 ( 45%)
............................................................... 189 / 276 ( 68%)
............................................................... 252 / 276 ( 91%)
........................

Time: 591 ms, Memory: 10.50Mb

php-redmine-api客户端的基本用法

<?php

// For Composer users (this file is generated by Composer)
require_once 'vendor/autoload.php';

// Or if you've installed the library manually, use this instead.
// require 'vendor/php-redmine-api-x.y.z/lib/autoload.php';

$client = new Redmine\Client('http://redmine.example.com', 'API_ACCESS_KEY');
//-- OR --
$client = new Redmine\Client('http://redmine.example.com', 'username', 'password');

$client->user->all();
$client->user->listing();

$client->issue->create([
    'project_id'  => 'test',
    'subject'     => 'some subject',
    'description' => 'a long description blablabla',
    'assigned_to' => 'user1',
]);
$client->issue->all([
    'limit' => 1000
]);

请参阅example.php以获取更多示例。

用户伪装

自Redmine V2.2版起,您可以通过REST API进行用户伪装

$client = new Redmine\Client('http://redmine.example.com', 'API_ACCESS_KEY');

// impersonate user
$client->setImpersonateUser('jsmith');

// create a time entry for jsmith
$client->time_entry->create($data);

// remove impersonation for further calls
$client->setImpersonateUser(null);

谢谢!

  • 感谢Thomas Spycher为本类库的第一版做出的贡献。
  • 感谢Thibault Duplessis(别名:ornicar)提供的php-github-api库,是灵感的绝佳来源!
  • 以及所有贡献者
  • 特别是JanMalte,他为测试覆盖率做出的令人印象深刻的贡献! :)