你能帮我讲一下如何使用导管在Phabricator中获得差异吗?
我正在尝试编写一个脚本,以根据不同的标准(例如状态,每用户等)从Phabricator获取差异列表。我已经看到有一个api连接到Phabricator的包名为conduit(https://secure.phabricator.com/book/phabdev/article/conduit/),但是虽然提供了一个ConduitClient类(https://secure.phabricator.com/diffusion/PHU/browse/master/src/conduit/ConduitClient.php $ 3),但没有给出关于使用它的方法的指示(该类依赖于一些外部类)。谢谢!
答案 0 :(得分:2)
我想出了如何使用ConduitClient创建新任务。您应该能够使用相同的方法调用任何管道方法:
<?php
require_once '/your/path/to/phutil/src/__phutil_library_init__.php';
// first you need to connect:
$client = new ConduitClient('https://your_phabricator_instance');
$params = array(
'certificate' => 'your conduit certificate from https://your_phabricator_instance/settings/panel/conduit/',
'client' => 'mytestclient',
'clientVersion' => '1.0',
'user' => 'your username',
'host' => 'https://your_phabricator_instance' // do not add path!
);
$client->callMethodSynchronous('conduit.connect', $params);
// then you can call methods:
$params = array(
'title' => 'test task',
'description' => 'test task'
);
$client->callMethodSynchronous('maniphest.createtask', $params);
使用正确的值替换require_once
中的路径,证书,主机名和用户,它应该可以正常工作。
如果出现问题,您会收到详细信息的例外情况。
https://your-phabricator-instance/conduit
哦,如果API返回了$client->callMethodSynchronous()
返回的内容,那么您可以执行$result = $client->callMethodSynchronous(...)
答案 1 :(得分:1)
我的回答是基于rve的答案,所以他应该得到道具!
Phabricator的API发生了一些变化,因此conduit.connect
必须进行调整。我的部分脚本如下所示:
$conduitSignature = 'your conduit certificate from https://your_phabricator_instance/settings/panel/conduit/';
$clientName = 'bot-client';
$clientVersion = '1.0';
$clientUser = 'bot';
$authToken = time();
$authSignature = sha1( $authToken . $conduitSignature );
$client = new ConduitClient('https://your_phabricator_instance');
$params = array(
'client' => $clientName,
'clientVersion' => $clientVersion,
'user' => $clientUser,
'authToken' => $authToken,
'authSignature' => $authSignature
);
$result = $client->callMethodSynchronous('conduit.connect', $params);