Пример #1
0
 /**
  * Sign the current request for write operations
  *
  * @param Request $request The current request
  */
 private function addAuthenticationHeaders(Request $request)
 {
     $client = $request->getClient();
     // Get a GMT/UTC timestamp
     $timestamp = gmdate('Y-m-d\\TH:i:s\\Z');
     // Build the data to base the hash on
     $data = $request->getMethod() . '|' . $request->getUrl() . '|' . $client->getConfig('publicKey') . '|' . $timestamp;
     // Generate signature
     $signature = hash_hmac('sha256', $data, $client->getConfig('privateKey'));
     // Add relevant request headers (overwriting once that might already exist)
     $request->setHeader('X-Imbo-Authenticate-Signature', $signature);
     $request->setHeader('X-Imbo-Authenticate-Timestamp', $timestamp);
 }
Пример #2
0
 /**
  * @param \Guzzle\Http\Message\Request $request
  */
 public function signRequest(Request $request)
 {
     $requestWrapper = new RequestWrapper($request);
     if (!$request->hasHeader('Date')) {
         $time = new \DateTime();
         $time->setTimezone(new \DateTimeZone('GMT'));
         $request->setHeader('Date', $time->format(ClientInterface::HTTP_DATE));
     }
     if (!$request->hasHeader('Content-Type')) {
         $request->setHeader('Content-Type', $this->defaultContentType);
     }
     $authorization = $this->requestSigner->getAuthorization($requestWrapper, $this->id, $this->secretKey);
     $request->setHeader('Authorization', $authorization);
 }
Пример #3
0
 /**
  * @covers Guzzle\Http\Message\Request::changedHeader
  * @covers Guzzle\Http\Message\Request::setHeader
  */
 public function testCatchesAllHostHeaderChanges()
 {
     // Tests setting using headers
     $this->request->setHeader('Host', 'www.abc.com');
     $this->assertEquals('www.abc.com', $this->request->getHost());
     $this->assertEquals('www.abc.com:8124', $this->request->getHeader('Host'));
     $this->assertEquals(8124, $this->request->getPort());
     // Tests setting using setHost()
     $this->request->setHost('abc.com');
     $this->assertEquals('abc.com', $this->request->getHost());
     $this->assertEquals('abc.com:8124', $this->request->getHeader('Host'));
     $this->assertEquals(8124, $this->request->getPort());
     // Tests setting with a port
     $this->request->setHost('abc.com:8081');
     $this->assertEquals('abc.com', $this->request->getHost());
     $this->assertEquals('abc.com:8081', $this->request->getHeader('Host'));
     $this->assertEquals(8081, $this->request->getPort());
     // Tests setting with a port using the Host header
     $this->request->setHeader('Host', 'solr.com:8983');
     $this->assertEquals('solr.com', $this->request->getHost());
     $this->assertEquals('solr.com:8983', (string) $this->request->getHeader('Host'));
     $this->assertEquals(8983, $this->request->getPort());
     // Tests setting with an inferred 443 port using the Host header
     $this->request->setScheme('https');
     $this->request->setHeader('Host', 'solr.com');
     $this->assertEquals('solr.com', $this->request->getHost());
     $this->assertEquals('solr.com:8983', (string) $this->request->getHeader('Host'));
     $this->assertEquals(8983, $this->request->getPort());
 }
Пример #4
0
 public function testHoldsCookies()
 {
     $this->assertNull($this->request->getCookie('test'));
     // Set a cookie
     $this->assertSame($this->request, $this->request->addCookie('test', 'abc'));
     $this->assertEquals('abc', $this->request->getCookie('test'));
     // Multiple cookies by setting the Cookie header
     $this->request->setHeader('Cookie', '__utma=1.638370270.1344367610.1374365610.1944450276.2; __utmz=1.1346368610.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); hl=de; PHPSESSID=ak93pqashi5uubuoq8fjv60897');
     $this->assertEquals('1.638370270.1344367610.1374365610.1944450276.2', $this->request->getCookie('__utma'));
     $this->assertEquals('1.1346368610.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)', $this->request->getCookie('__utmz'));
     $this->assertEquals('de', $this->request->getCookie('hl'));
     $this->assertEquals('ak93pqashi5uubuoq8fjv60897', $this->request->getCookie('PHPSESSID'));
     // Unset the cookies by setting the Cookie header to null
     $this->request->setHeader('Cookie', null);
     $this->assertNull($this->request->getCookie('test'));
     $this->request->removeHeader('Cookie');
     // Set and remove a cookie
     $this->assertSame($this->request, $this->request->addCookie('test', 'abc'));
     $this->assertEquals('abc', $this->request->getCookie('test'));
     $this->assertSame($this->request, $this->request->removeCookie('test'));
     $this->assertNull($this->request->getCookie('test'));
     // Remove the cookie header
     $this->assertSame($this->request, $this->request->addCookie('test', 'abc'));
     $this->request->removeHeader('Cookie');
     $this->assertEquals('', (string) $this->request->getHeader('Cookie'));
     // Remove a cookie value
     $this->request->addCookie('foo', 'bar')->addCookie('baz', 'boo');
     $this->request->removeCookie('foo');
     $this->assertEquals(array('baz' => 'boo'), $this->request->getCookies());
     $this->request->addCookie('foo', 'bar');
     $this->assertEquals('baz=boo; foo=bar', (string) $this->request->getHeader('Cookie'));
 }
Пример #5
0
 /**
  * Send the request
  */
 public function send()
 {
     // make a request object
     $this->request = $this->client->createRequest($this->method, $this->host . $this->resource);
     // set headers
     foreach ($this->headers as $header => $value) {
         $this->request->setHeader($header, $value);
     }
     // set body
     if (!empty($this->body)) {
         $this->request->setBody($this->body);
     }
     try {
         // finally send the request
         $this->response = $this->client->send($this->request);
     } catch (BadResponseException $e) {
         $this->response = $this->request->getResponse();
     }
     $this->sent = true;
 }
Пример #6
0
 public function setRequestAuthentication(\Guzzle\Http\Message\Request $request)
 {
     $oauthAccessToken = $this->configuration->get('oauthAccessToken');
     // Do we have an oAuth2 access token?
     if (!empty($oauthAccessToken)) {
         $request->setHeader('Authorization', 'Bearer ' . $oauthAccessToken);
     } else {
         // Otherwise, use basic authentication
         $request->setAuth($this->configuration->get('apiToken'), $this->configuration->get('apiSecret'));
     }
     return $request;
 }
Пример #7
0
 /**
  * @When /^I request "(GET|PUT|POST|DELETE|PATCH) ([^"]*)"$/
  */
 public function iRequest($httpMethod, $resource)
 {
     // process any %battles.last.id% syntaxes
     $resource = $this->processReplacements($resource);
     $this->resource = $resource;
     // reset the response payload
     $this->responsePayload = null;
     $method = strtolower($httpMethod);
     try {
         switch ($httpMethod) {
             case 'PUT':
             case 'POST':
             case 'PATCH':
                 // process any %user.weaverryan.id% syntaxes
                 $payload = $this->processReplacements($this->requestPayload);
                 $this->lastRequest = $this->client->{$method}($resource, null, $payload);
                 break;
             default:
                 $this->lastRequest = $this->client->{$method}($resource);
         }
         if ($this->authUser) {
             $this->lastRequest->setAuth($this->authUser, $this->authPassword);
         }
         foreach ($this->headers as $key => $val) {
             $this->lastRequest->setHeader($key, $val);
         }
         $this->response = $this->lastRequest->send();
     } catch (BadResponseException $e) {
         $response = $e->getResponse();
         // Sometimes the request will fail, at which point we have
         // no response at all. Let Guzzle give an error here, it's
         // pretty self-explanatory.
         if ($response === null) {
             throw $e;
         }
         $this->response = $e->getResponse();
     }
 }
Пример #8
0
 public function setHeader($name, $value)
 {
     $this->_request->setHeader($name, $value);
     return $this;
 }
Пример #9
0
 protected function generateRequest($url, array $subProtocols, array $headers)
 {
     $headers = array_merge($this->defaultHeaders, $headers);
     $headers['Sec-WebSocket-Key'] = $this->generateKey();
     $request = new Request('GET', $url, $headers);
     $scheme = strtolower($request->getScheme());
     if (!in_array($scheme, ['ws', 'wss'])) {
         throw new \InvalidArgumentException(sprintf('Cannot connect to invalid URL (%s)', $url));
     }
     $request->setScheme('HTTP');
     if (!$request->getPort()) {
         $request->setPort('wss' === $scheme ? 443 : 80);
     } else {
         $request->setHeader('Host', $request->getHeader('Host') . ":{$request->getPort()}");
     }
     if (!$request->getHeader('Origin')) {
         $request->setHeader('Origin', str_replace('ws', 'http', $scheme) . '://' . $request->getHost());
     }
     // do protocol headers
     if (count($subProtocols) > 0) {
         $protocols = implode(',', $subProtocols);
         if ($protocols != "") {
             $request->setHeader('Sec-WebSocket-Protocol', $protocols);
         }
     }
     return $request;
 }
Пример #10
0
 /**
  * Function to set headers on the request
  *
  * @param  array  $requestHeaders  Any additional headers for the request
  * @return  void
  */
 public function setHeaders($requestHeaders = array())
 {
     foreach ($requestHeaders as $header => $value) {
         $this->request->setHeader($header, $value);
     }
 }
Пример #11
0
 /**
  * 
  * @param \Guzzle\Http\Message\Request $request
  * @return \ChartBlocks\Client
  */
 public function bindAccept(HttpRequest $request)
 {
     $request->setHeader('Accept', 'application/json');
     return $this;
 }
Пример #12
0
 /**
  * @param \Guzzle\Http\Message\Request $request
  * @return \Guzzle\Http\Message\Response
  */
 public function send(\Guzzle\Http\Message\Request $request)
 {
     $token = $this->getToken();
     $request->setHeader('X-Auth-Token', $token['token'])->setHeader('Content-Type', 'application/json')->setHeader('X-Auth-UserId', $token['user_id']);
     return $request->send();
 }