ffogarasi/redmine-api

Redmine API 客户端

v1.6.0 2017-11-17 11:17 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 信息服务”(/settings/edit?tab=authentication)
  • 然后在您的个人资料页面中获取您的 API 访问密钥:/my/account
  • 或使用您的 用户名和密码

安装

Composer

Composer 用户可以简单地运行

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

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

例如,

<?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);

谢谢!