2014-10-16 5 views
1

Можете ли вы помочь мне с рабочим примером о том, как получить дифференциалы в Phabricator с помощью кабелепровода?Как получить (с PHP) дифференциалы от 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), никаких указаний относительно способа его использования не указано (также класс зависит от некоторых внешних классы). Спасибо!

ответ

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, сертификат, имя хоста и пользователя с правильными значениями и он должен работать. Если что-то не так, вы получаете исключение с подробной информацией.

список с методами вызвать и какие параметры можно доступно на вашем экземпляре phabricator на https://your-phabricator-instance/conduit

О, и если API возвращает то, что возвращаемый $client->callMethodSynchronous() так что вы можете сделать что-то вроде $result = $client->callMethodSynchronous(...)

+0

Спасибо, это сработало для меня. Некоторые советы о незначительных контрольно-пропускных пунктах, которые я ударил: __phutil_library_init __. Php - это phutil, который является отдельным исходным деревом, чем фабрикат. Кроме того, я пошел в фабрикатор и добавил нового пользователя бота, затем отредактировал его настройки и получил сертификат оттуда. Ранее я пытался использовать свой собственный сертификат (который не работает, поскольку пользователь не соответствует) – JasonZ

1

Мой ответ основан на ответе rve, поэтому он заслуживает реквизита!

API-интерфейс Phabricator немного изменился, поэтому необходимо настроить 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); 

 Смежные вопросы

  • Нет связанных вопросов^_^