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