/** * @return Guzzle\Http\Client */ public function getClient() { if (!isset($this->o_client)) { $this->o_client = new \Guzzle\Http\Client(self::NSL_SERVICES_URL, array('request.params' => array('cache.override_ttl' => 3600, 'params.cache.revalidate' => 'skip'))); // can_cache needs to be callable $this->o_client->addSubscriber(new CachePlugin(array('storage' => new DefaultCacheStorage(new DoctrineCacheAdapter(new FilesystemCache(caGetTempDirPath()))), 'can_cache' => function () { // let's just cache for the above ttl return true; }))); $o_conf = Configuration::load(); if ($vs_proxy = $o_conf->get('web_services_proxy_url')) { /* proxy server is configured */ $vo_config = $this->o_client->getConfig()->add('proxy', $vs_proxy); if (($vs_proxy_user = $o_conf->get('web_services_proxy_auth_user')) && ($vs_proxy_pass = $o_conf->get('web_services_proxy_auth_pw'))) { $vo_config->add('curl.options', array(CURLOPT_PROXYUSERPWD => "{$vs_proxy_user}:{$vs_proxy_pass}")); } } } return $this->o_client; }
public function __construct($username, $token, $client = null, $fragment = null) { parent::__construct('https://push.superfeedr.com'); $this->username = $username; $this->token = $token; if ($client === null) { $client = new Guzzle\Http\Client(); } $client->getConfig()->setPath('request.options/auth', [$username, $token]); $this->client = $client; if ($fragment !== null) { $this->fragment = $fragment; } }
/** * @return \Guzzle\Http\Client */ protected function getClient() { if ($this->client === null) { $this->client = new Client('https://bitbucket.org/api/1.0/'); if ($this->authentication) { switch ($this->authentication->getType()) { case AuthInterface::BASIC: $this->client->getConfig()->setPath('request.options/auth', array($this->authentication->getUsername(), $this->authentication->getPassword(), 'Basic|Digest|NTLM|Any')); break; case AuthInterface::OAUTH: // TODO throw new \RuntimeException('Incomplete implementation'); break; default: throw new \RuntimeException(sprintf('Authentication via "%s" is not supported by bitbucket', $this->authentication->getType())); } } } return $this->client; }
/** * @covers Guzzle\Http\Curl\CurlMulti */ public function testProperlyBlocksBasedOnRequestsInScope() { $this->getServer()->flush(); $this->getServer()->enqueue(array("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\ntest1", "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\ntest2", "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\ntest3", "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\ntest4", "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\ntest5", "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\ntest6", "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n", "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n")); $client = new Client($this->getServer()->getUrl()); $requests = array($client->get(), $client->get(), $client->get()); // Sends 2 new requests in the middle of a CurlMulti loop while other requests // are completing. This causes the scope of the multi handle to go up. $callback = function (Event $event) use($client) { $client->getConfig()->set('called', $client->getConfig('called') + 1); $request = $client->get(); if ($client->getConfig('called') <= 2) { $request->getEventDispatcher()->addListener('request.complete', function (Event $event) use($client) { $client->head()->send(); }); } $request->send(); }; $requests[0]->getEventDispatcher()->addListener('request.complete', $callback); $requests[1]->getEventDispatcher()->addListener('request.complete', $callback); $requests[2]->getEventDispatcher()->addListener('request.complete', $callback); $client->send($requests); $this->assertEquals(8, count($this->getServer()->getReceivedRequests(false))); }
public function testHardResetReopensMultiHandle() { $this->getServer()->enqueue(array("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n", "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n")); $stream = fopen('php://temp', 'w+'); $client = new Client($this->getServer()->getUrl()); $client->getConfig()->set('curl.CURLOPT_VERBOSE', true)->set('curl.CURLOPT_STDERR', $stream); $request = $client->get(); $multi = new CurlMulti(); $multi->add($request); $multi->send(); $multi->reset(true); $multi->add($request); $multi->send(); rewind($stream); $this->assertNotContains('Re-using existing connection', stream_get_contents($stream)); }
public function testHasDefaultOptionsHelperMethods() { $client = new Client(); // With path $client->setDefaultOption('headers/foo', 'bar'); $this->assertEquals('bar', $client->getDefaultOption('headers/foo')); // With simple key $client->setDefaultOption('allow_redirects', false); $this->assertFalse($client->getDefaultOption('allow_redirects')); $this->assertEquals(array('headers' => array('foo' => 'bar'), 'allow_redirects' => false), $client->getConfig('request.options')); $request = $client->get('/'); $this->assertEquals('bar', $request->getHeader('foo')); }
public function testCanSetDefaultRequestOptions() { $client = new Client(); $client->getConfig()->set('request.options', array('query' => array('test' => '123', 'other' => 'abc'), 'headers' => array('Foo' => 'Bar', 'Baz' => 'Bam'))); $request = $client->createRequest('GET', 'http://www.foo.com?test=hello', array('Foo' => 'Test')); // Explicit options on a request should overrule default options $this->assertEquals('Test', (string) $request->getHeader('Foo')); $this->assertEquals('hello', $request->getQuery()->get('test')); // Default options should still be set $this->assertEquals('abc', $request->getQuery()->get('other')); $this->assertEquals('Bam', (string) $request->getHeader('Baz')); }
/** * @covers Guzzle\Http\Client::createRequest */ public function testCreatesRequestsWithDefaultValues() { $client = new Client($this->getServer()->getUrl() . 'base'); // Create a GET request $request = $client->createRequest(); $this->assertEquals('GET', $request->getMethod()); $this->assertEquals($client->getBaseUrl(), $request->getUrl()); // Create a DELETE request $request = $client->createRequest('DELETE'); $this->assertEquals('DELETE', $request->getMethod()); $this->assertEquals($client->getBaseUrl(), $request->getUrl()); // Create a HEAD request with custom headers $request = $client->createRequest('HEAD', 'http://www.test.com/'); $this->assertEquals('HEAD', $request->getMethod()); $this->assertEquals('http://www.test.com/', $request->getUrl()); // Create a PUT request $request = $client->createRequest('PUT'); $this->assertEquals('PUT', $request->getMethod()); // Create a PUT request with injected config $client->getConfig()->set('a', 1)->set('b', 2); $request = $client->createRequest('PUT', '/path/{a}?q={b}'); $this->assertEquals($request->getUrl(), $this->getServer()->getUrl() . 'path/1?q=2'); }
public function getDefaultOptions() { return $this->client->getConfig(); }
public function testAllowsCustomCacheFilterStrategies() { $plugin = new CachePlugin($this->adapter); $client = new Client($this->getServer()->getUrl(), array('params.cache.filter_strategy' => function ($request) { return true; })); $plugin->onRequestBeforeSend(new Event(array('request' => $client->post('/')))); $this->assertEquals(1, count($this->readAttribute($plugin, 'cached'))); $client->getConfig()->set('params.cache.filter_strategy', function ($request) { return false; }); $plugin->onRequestBeforeSend(new Event(array('request' => $client->get('/')))); $this->assertEquals(1, count($this->readAttribute($plugin, 'cached'))); }
/** * @param string|bool $key * @return \Guzzle\Common\Collection|mixed */ public function getGuzzleConfig($key = false) { return $this->client->getConfig($key); }
/** * Create a new instance. * * @param string $user The transifex API user. * * @param string $pass The transifex API password. */ public function __construct($user, $pass) { $this->client = new Client('http://www.transifex.com/api/2/'); $this->client->getConfig()->setPath('request.options/auth', array($user, $pass, 'Basic')); }
/** * @return \Guzzle\Http\Client */ protected function getClient() { if ($this->client === null) { $this->client = new Client('https://api.github.com/'); $this->client->setDefaultOption('headers/Accept', 'application/vnd.github.v3+json'); if ($this->authentication) { switch ($this->authentication->getType()) { case AuthInterface::BASIC: $this->client->getConfig()->setPath('request.options/auth', array($this->authentication->getUsername(), $this->authentication->getPassword(), 'Basic|Digest|NTLM|Any')); break; case AuthInterface::ACCESS_TOKEN: $this->client->setDefaultOption('headers/Authorization', 'token ' . $this->authentication->getAccessToken()); break; default: throw new \RuntimeException(sprintf('Authentication via "%s" is not supported by github', $this->authentication->getType())); } } } return $this->client; }