2014-10-16 7 views
1

도관을 사용하여 Phabricator에서 미분을 얻는 방법에 대한 실제 예제를 도울 수 있습니까?도관을 사용하여 Phabricator의 미분을 (PHP로) 어떻게받을 수 있습니까?

다른 기준 (예 : 상태, 사용자 별 등)을 기반으로 Phabricator의 미분 목록을 가져 오는 스크립트를 작성하려고합니다. 나는 ConduitClient 클래스가 제공되지만 (https://secure.phabricator.com/diffusion/PHU/browse/master/src/conduit/ConduitClient.php $ 3), Phabricator라는 conduit (https://secure.phabricator.com/book/phabdev/article/conduit/)에 대한 API 연결을위한 패키지가 있음을 알았지 만 사용 방법에 대한 어떤 지시도 주어지지 않았다. (또한 클래스는 외부의 일부 클래스에 의존한다. 클래스). 고맙습니다!

답변

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는 그래서 당신은 $result = $client->callMethodSynchronous(...)

+0

감사합니다. 부도덕 한로드 블록에 대한 몇 가지 팁 : __phutil_library_init __. php는 phutricer와는 별도의 소스 트리 인 phutil에서 가져온 것입니다. 또한 phabricator에 들어가서 새로운 bot 사용자를 추가 한 다음 해당 사용자의 설정을 편집하고 거기에서 인증서를 받았습니다. 이전에 내 자신의 인증서를 사용하려고했습니다 (사용자가 일치하지 않기 때문에 작동하지 않습니다). – JasonZ

1
같은 뭔가를 할 수 $client->callMethodSynchronous()에 의해 반환되는 뭔가를 반환하는 경우

내 대답은 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);