private function getTransports()
 {
     $browserSocket = new \Buzz\Browser();
     $browserSocket->setClient(new \Buzz\Client\FileGetContents());
     $zendFrameworkOneHttpClientSocket = new \Zend_Http_Client();
     $zendFrameworkOneHttpClientSocket->setAdapter(new \Zend_Http_Client_Adapter_Socket());
     $zendFrameworkOneHttpClientProxy = new \Zend_Http_Client();
     $zendFrameworkOneHttpClientProxy->setAdapter(new \Zend_Http_Client_Adapter_Proxy());
     $zendFrameworkTwoHttpClientSocket = new \Zend\Http\Client();
     $zendFrameworkTwoHttpClientSocket->setAdapter(new \Zend\Http\Client\Adapter\Socket());
     $zendFrameworkTwoHttpClientProxy = new \Zend\Http\Client();
     $zendFrameworkTwoHttpClientProxy->setAdapter(new \Zend\Http\Client\Adapter\Proxy());
     $artaxClient = new \Amp\Artax\Client();
     $transports = array(new fXmlRpc\Transport\StreamSocketTransport(), new fXmlRpc\Transport\BuzzBrowserBridge($browserSocket), new fXmlRpc\Transport\ZendFrameworkOneHttpClientBridge($zendFrameworkOneHttpClientSocket), new fXmlRpc\Transport\ZendFrameworkOneHttpClientBridge($zendFrameworkOneHttpClientProxy), new fXmlRpc\Transport\ZendFrameworkTwoHttpClientBridge($zendFrameworkTwoHttpClientSocket), new fXmlRpc\Transport\ZendFrameworkTwoHttpClientBridge($zendFrameworkTwoHttpClientProxy), new fXmlRpc\Transport\ArtaxBrowserBridge($artaxClient));
     if (extension_loaded('curl') && !in_array('php_curl', $this->disabledExtensions)) {
         $browserCurl = new \Buzz\Browser();
         $browserCurl->setClient(new \Buzz\Client\Curl());
         $transports[] = new fXmlRpc\Transport\BuzzBrowserBridge($browserCurl);
         $zendFrameworkOneHttpClientCurl = new \Zend_Http_Client();
         $zendFrameworkOneHttpClientCurl->setAdapter(new \Zend_Http_Client_Adapter_Curl());
         $transports[] = new fXmlRpc\Transport\ZendFrameworkOneHttpClientBridge($zendFrameworkOneHttpClientCurl);
         $zendFrameworkTwoHttpClientCurl = new \Zend\Http\Client();
         $zendFrameworkTwoHttpClientCurl->setAdapter(new \Zend\Http\Client\Adapter\Curl());
         $transports[] = new fXmlRpc\Transport\ZendFrameworkTwoHttpClientBridge($zendFrameworkTwoHttpClientCurl);
         $guzzle = new \Guzzle\Http\Client();
         $transports[] = new fXmlRpc\Transport\GuzzleBridge($guzzle);
         $transports[] = new fXmlRpc\Transport\CurlTransport();
     }
     return $transports;
 }
Пример #2
0
 public function setup()
 {
     $browser = new \Buzz\Browser();
     $curl = new \Buzz\Client\Curl();
     $curl->setOption(CURLOPT_USERAGENT, "WoeidFinder/0.1");
     $browser->setClient($curl);
     $nomatimAdapter = new \Famex\WoeidFinder\Adapters\NomatimAdapter();
     $nomatimAdapter->setBrowser($browser);
     $yqlQueryAdapter = new \Famex\WoeidFinder\Adapters\YqlQueryAdapter();
     $yqlQueryAdapter->setBrowser($browser);
     $this->woeidFinder = new \Famex\WoeidFinder\WoeidFinder();
     $this->woeidFinder->setNomatimAdapter($nomatimAdapter);
     $this->woeidFinder->setYqlQueryAdapter($yqlQueryAdapter);
 }
Пример #3
0
 public function sendRequest($method, $path, array $options = array())
 {
     $path = ltrim($path, '/');
     // leading slash in path fails in github:enterprise
     $token = null;
     if (!empty($options['access_token'])) {
         $token = $options['access_token'];
     } else {
         if (!empty($options['oauth_token'])) {
             $token = $options['oauth_token'];
         } else {
             $token = $this->configuration()->get('oauth_token');
         }
     }
     $force_urlencoded = false;
     if (!empty($options['force_urlencoded']) && $options['force_urlencoded']) {
         $force_urlencoded = true;
     }
     $url = null;
     if (!empty($options['endpoint'])) {
         $url = $options['endpoint'];
     } else {
         $url = $this->configuration()->get('api_endpoint');
     }
     $connection = $this->connection()->create($options);
     $listener = $connection['listener'];
     $options = $connection['options'];
     $connection = $connection['connection'];
     if (!empty($options['accept'])) {
         $connection->addHeader('Accept: ' . $options['accept']);
     } else {
         $connection->addHeader('Accept: application/vnd.github.beta+json');
     }
     if ($token) {
         $connection->addHeader('Authorization: token ' . $token);
     }
     $browser = new \Buzz\Browser();
     if ($this->fixture) {
         $request_client = new Request\FixtureRequest($this->fixture);
     } else {
         $request_client = new \Buzz\Client\Curl();
     }
     $browser->setClient($request_client);
     if (!empty($listener)) {
         $browser->addListener($listener);
     }
     if (strtolower($method) == 'get') {
         $path .= '?' . http_build_query($options);
     } elseif (in_array(strtolower($method), array('patch', 'post', 'put'))) {
         $connection->setContent(json_encode($options, true));
     }
     $connection->fromUrl($url);
     $connection->setResource('/' . $path);
     $connection->setMethod($method);
     $request_host = $this->configuration()->get('request_host');
     if (!empty($request_host)) {
         $connection->setHost($request_host);
     }
     $response = $browser->send($connection);
     $this->fixture = false;
     $this->handleErrors($connection, $response);
     return $response;
 }
Пример #4
0
<?php

/**
 * Run composer install, first ofcourse.
 *
 * Example implementation usage
 * - Creates new Buzz/Curl instance
 * - Logs in to API
 * - Fetches issue, plus it's children / parent
 * - Sets issue status to built, with a comment.
 * - Logs time on issue
 * - Fetches all WorkItem lines for the issue (logged time)
 */
require 'vendor/autoload.php';
require 'src/YouTrack/YouTrackCommunicator.php';
$client = new Buzz\Browser();
$client->setClient(new Buzz\Client\Curl());
$api = new \YouTrack\YouTrackCommunicator($client, array(' uri' => 'https://youtrack.myhost.com', 'username' => 'myUser', 'password' => 'myPassword'));
// find issue entities from a string, by parsing issue
$issueIDs = $api->findIds("re #MYPRJ-1, fixes #MYPRJ-2, reopens #MYPRJ-3");
if (count($issueIDs) > 0) {
    $issues = $api->searchIssues($issueIDs);
    print_r($issues);
}
// finding a single issue does not use the #prefix findIds does!
$myIssue = $api->getIssue('MYPRJ-1');
$api->executeCommands($myIssue, ['State', 'Built'], 'I just closed this automagically.');
$api->trackTimeOnIssue($myIssue, 120, 'Time booked via YouTrackCommunicator API');
$loggedWork = $api->getWorkItemsForIssue($myIssue);