예제 #1
0
 /**
  * @inheritDoc
  */
 public function execute()
 {
     $client = new Client(['headers' => $this->request->getHeaders()]);
     try {
         $response = $client->request($this->request->getMethod(), $this->request->getUri(), ['body' => $this->request->getBody()->getContents()]);
     } catch (ClientException $e) {
         $this->error = ['status' => $e->getResponse()->getStatusCode(), 'content' => $e->getResponse()->getBody()->getContents()];
         return false;
     }
     $this->output = $response->getBody()->getContents();
     return true;
 }
예제 #2
0
 /**
  * {@InheritDoc}
  */
 public function send(Request $request)
 {
     $guzzleRequest = $this->client->createRequest($request->getMethod(), $request->getUri(), $request->getHeaders(), $request->getBody());
     $guzzleResponse = $guzzleRequest->send();
     $response = new Response($guzzleResponse->getStatusCode(), $guzzleResponse->getHeaders()->toArray(), $guzzleResponse->getBody(true));
     return $response;
 }
예제 #3
0
 private function sendRequestAsyncInternal(BaseRequest &$request, BaseResponse &$response, AsyncCallback $callback = NULL)
 {
     $this->addRequiredHeaders($request);
     $parameters = array('exceptions' => false, 'http_errors' => false);
     $queryString = $request->getQueryString();
     $body = $request->getBody();
     if ($queryString != NULL) {
         $parameters['query'] = $queryString;
     }
     if ($body != NULL) {
         $parameters['body'] = $body;
     }
     $request = new Request(strtoupper($request->getMethod()), $request->getResourcePath(), $request->getHeaders());
     try {
         if ($callback != NULL) {
             return $this->client->sendAsync($request, $parameters)->then(function ($res) use(&$response, $callback) {
                 try {
                     $response->parseResponse($res->getStatusCode(), $res->getBody());
                     $callback->onSucceed($response);
                 } catch (MnsException $e) {
                     $callback->onFailed($e);
                 }
             });
         } else {
             return $this->client->sendAsync($request, $parameters);
         }
     } catch (TransferException $e) {
         $message = $e->getMessage();
         if ($e->hasResponse()) {
             $message = $e->getResponse()->getBody();
         }
         throw new MnsException($e->getCode(), $message, $e);
     }
 }
예제 #4
0
 /**
  * {@InheritDoc}
  */
 public function send(Request $request)
 {
     $guzzleRequest = $this->client->createRequest($request->getMethod(), $request->getUri(), ['headers' => $request->getHeaders()]);
     $guzzleRequest->setBody(Stream::factory($request->getBody()));
     $guzzleResponse = $this->getClient()->send($guzzleRequest);
     $response = new Response($guzzleResponse->getStatusCode(), $guzzleResponse->getHeaders(), $guzzleResponse->getBody(true));
     return $response;
 }
예제 #5
0
 /**
  * Adds static header(s) to the HTTP request headers
  *
  * @param \GuzzleHttp\Psr7\Request $request HTTP request object.
  * 
  * @return \GuzzleHttp\Psr7\Request
  */
 public function handleRequest($request)
 {
     $result = $request;
     foreach ($this->_headers as $key => $value) {
         $headers = $request->getHeaders();
         if (!array_key_exists($key, $headers)) {
             $result = $result->withHeader($key, $value);
         }
     }
     return $result;
 }
예제 #6
0
 /**
  * @covers MicrosoftAzure\Storage\Common\Internal\Filters\HeadersFilter::handleRequest
  * @covers MicrosoftAzure\Storage\Common\Internal\Filters\HeadersFilter::__construct
  */
 public function testHandleRequestEmptyHeaders()
 {
     // Setup
     $uri = new Uri('http://microsoft.com');
     $request = new Request('Get', $uri, array(), NULL);
     $filter = new HeadersFilter(array());
     $expected = $request->getHeaders();
     // Test
     $request = $filter->handleRequest($request);
     // Assert
     $this->assertEquals($expected, $request->getHeaders());
 }
예제 #7
0
 /**
  * @return array
  */
 public function getHeaders()
 {
     return $this->request->getHeaders();
 }
예제 #8
0
 public function testOverridesHostWithUri()
 {
     $r = new Request('GET', 'http://foo.com/baz?bar=bam');
     $this->assertEquals(['Host' => ['foo.com']], $r->getHeaders());
     $r2 = $r->withUri(new Uri('http://www.baz.com/bar'));
     $this->assertEquals('www.baz.com', $r2->getHeaderLine('Host'));
 }
 /**
  * Adds authentication header to the request headers.
  *
  * @param \GuzzleHttp\Psr7\Request $request HTTP request object.
  * 
  * @return \GuzzleHttp\Psr7\Request
  */
 public function handleRequest($request)
 {
     $requestHeaders = HttpFormatter::formatHeaders($request->getHeaders());
     $signedKey = $this->_authenticationScheme->getAuthorizationHeader($requestHeaders, $request->getUri(), \GuzzleHttp\Psr7\parse_query($request->getUri()->getQuery()), $request->getMethod());
     return $request->withHeader(Resources::AUTHENTICATION, $signedKey);
 }
예제 #10
0
 public function testAggregatesHeaders()
 {
     $r = new Request('GET', '', ['ZOO' => 'zoobar', 'zoo' => ['foobar', 'zoobar']]);
     $this->assertEquals(['ZOO' => ['zoobar', 'foobar', 'zoobar']], $r->getHeaders());
     $this->assertEquals('zoobar, foobar, zoobar', $r->getHeaderLine('zoo'));
 }
예제 #11
0
 /**
  * Assert that the request uses $accessToken as the bearer token in its
  * Authorization header
  *
  * @param string $accessToken
  *   Expected OAuth access token in the Authorization header of the request
  * @param Request $request
  *   Request object to check
  * @return void
  */
 public function assertRequestAuthenticates($accessToken, Request $request)
 {
     $headers = $request->getHeaders();
     // Assert that the Authorization header contains the access token
     $this->assertSame("Bearer {$accessToken}", $headers['Authorization'][0]);
 }
예제 #12
0
 /**
  * Performs SOAP request over HTTP.
  *
  * @param  string $request The XML SOAP request.
  * @param  string $headers The HTTP request header.
  * @return mixed
  */
 public function __doRequest($request, array $headers = [])
 {
     $this->emit('before.request', [&$request, &$headers]);
     $httpRequest = new Request('POST', $this->location, $headers, (string) $request);
     $this->headers = $httpRequest->getHeaders();
     try {
         $this->response = $this->httpClient->send($httpRequest);
         $this->emit('after.request', [$this->lastResponse(), $this->lastResponseHeaders()]);
     } catch (\GuzzleHttp\Exception\BadResponseException $ex) {
         if ($ex->hasResponse()) {
             $this->response = $ex->getResponse();
             $this->emit('after.request', [$this->lastResponse(), $this->lastResponseHeaders()]);
         }
         throw $ex;
     }
     return $this->response;
 }
예제 #13
0
 /**
  * Handle an error. We handle errors by throwing an exception.
  *
  * @param string $error An error code representing the error
  *                      (use_underscore_separators).
  * @param string|null $message The error message.
  * @param GuzzleRequest|null $request Optional. The Guzzle request object.
  * @param ResponseInterface|null $response Optional. The Guzzle response object.
  *
  * @return void
  * @throws BoxViewException
  */
 protected static function error($error, $message = null, $request = null, $response = null)
 {
     if (!empty($request)) {
         $message .= "\n";
         $message .= 'Method: ' . $request->getMethod() . "\n";
         $message .= 'URL: ' . $request->getUri() . "\n";
         $message .= 'Headers: ' . json_encode($request->getHeaders()) . "\n";
         $message .= 'Request Body: ' . $request->getBody() . "\n";
     }
     if (!empty($response)) {
         $message .= "\n";
         $message .= 'Response Body: ' . $response->getBody() . "\n";
     }
     $exception = new BoxViewException($message);
     $exception->errorCode = $error;
     throw $exception;
 }