/**
  * @param  Request     $request
  * @return BuzzRequest
  */
 protected function prepareRequest(Request $request)
 {
     $buzzRequest = new BuzzRequest($request->getMethod(), $request->getUrl()->getResource(), $request->getUrl()->getHost());
     $buzzRequest->setProtocolVersion($request->getProtocolVersion());
     $buzzRequest->setHeaders(HeaderConverter::convertAssociativeToRaw($this->prepareHeaders($request)));
     $buzzRequest->setContent($request->getContent());
     return $buzzRequest;
 }
示例#2
0
 /**
  * Create request instance
  *
  * @param string $method Request method
  * @param string $path Request path
  * @param array $body Request body array
  */
 protected function createRequest($method, $path, array $body)
 {
     $request = new Request($method, $path, $this->createHost());
     $request->setHeaders(['Accept' => 'application/json; charset=UTF-8', 'Content-Type' => 'application/json', 'X-Stream' => 'true']);
     $request->addHeader('Authorization: Basic ' . base64_encode($this->options['username'] . ':' . $this->options['password']));
     $request->setContent(json_encode($body));
     return $request;
 }
 public function provideIdenticalGetRequestsInDifferentFormats()
 {
     $data = array();
     $textRequest = $this->loadRequest('example.com');
     $guzzleRequest = $this->getRequestFactory()->fromMessage($textRequest);
     $buzzRequest = new BuzzRequest($guzzleRequest->getMethod(), $guzzleRequest->getPath());
     $buzzRequest->setHeaders($guzzleRequest->getHeaderLines());
     $zendRequest = ZendRequest::fromString($textRequest);
     $requests = array($buzzRequest, $guzzleRequest, $textRequest, $zendRequest);
     foreach ($requests as $request1) {
         foreach ($requests as $request2) {
             // Don't compare a request with itself
             if ($request1 !== $request2) {
                 continue;
             }
             $data[] = array($request1, $request2);
         }
     }
     return $data;
 }
 /**
  * Removes the CSRF token header from a $request.
  *
  * @param Request $request
  */
 private function removeCsrfHeader(Request $request)
 {
     foreach ($request->getHeaders() as $headerString) {
         list($headerName) = explode(': ', $headerString);
         if (strtolower($headerName) !== 'x-csrf-token') {
             $headers[] = $headerString;
         }
     }
     $request->setHeaders($headers);
 }
 /**
  * Performs an HTTP request
  *
  * @param string $url     The url to fetch
  * @param string|array $content The content of the request
  * @param array  $headers The headers of the request
  * @param string $method  The HTTP method to use
  *
  * @return HttpResponse The response content
  */
 protected function httpRequest($url, $content = null, $headers = array(), $method = null)
 {
     if (null === $method) {
         $method = null === $content ? HttpRequestInterface::METHOD_GET : HttpRequestInterface::METHOD_POST;
     }
     $request = new HttpRequest($method, $url);
     $response = new HttpResponse();
     $contentLength = 0;
     if (is_string($content)) {
         $contentLength = strlen($content);
     } elseif (is_array($content)) {
         $contentLength = strlen(implode('', $content));
     }
     $headers = array_merge(array('User-Agent: HWIOAuthBundle (https://github.com/hwi/HWIOAuthBundle)', 'Content-Length: ' . $contentLength), $headers);
     $request->setHeaders($headers);
     $request->setContent($content);
     $this->httpClient->send($request, $response);
     return $response;
 }
 /**
  * @param array $parameters
  *
  * @return array
  */
 protected function doHttpRequest($parameters)
 {
     $request = new Request(RequestInterface::METHOD_POST, self::OAUTH2_ACCESS_TOKEN_URL);
     $response = new Response();
     $contentParameters = ['client_id' => $this->configManager->get('oro_google_integration.client_id'), 'client_secret' => $this->configManager->get('oro_google_integration.client_secret')];
     $parameters = array_merge($contentParameters, $parameters);
     $content = http_build_query($parameters, '', '&');
     $headers = ['Content-length: ' . strlen($content), 'content-type: application/x-www-form-urlencoded', 'user-agent: oro-oauth'];
     $request->setHeaders($headers);
     $request->setContent($content);
     $this->httpClient->send($request, $response);
     return $this->getResponseContent($response);
 }
 /**
  * Performs an HTTP request
  *
  * @param string $url           The url to fetch
  * @param string|array $content The content of the request
  * @param array  $headers       The headers of the request
  * @param string $method        The HTTP method to use
  *
  * @return HttpResponse The response content
  */
 protected function httpRequest($url, $content = null, $headers = array(), $method = null)
 {
     if (null === $method) {
         $method = null === $content || '' === $content ? HttpRequestInterface::METHOD_GET : HttpRequestInterface::METHOD_POST;
     }
     $request = new HttpRequest($method, $url);
     $response = new HttpResponse();
     $contentLength = 0;
     if (is_string($content)) {
         $contentLength = strlen($content);
     } elseif (is_array($content)) {
         $contentLength = strlen(implode('', $content));
     }
     $headers = array_merge(array('User-Agent: HWIOAuthBundle (https://github.com/hwi/HWIOAuthBundle)', 'Content-Length: ' . $contentLength), $headers);
     $request->setHeaders($headers);
     $request->setContent($content);
     try {
         $this->httpClient->send($request, $response);
     } catch (ClientException $e) {
         throw new HttpTransportException('Error while sending HTTP request', $this->getName(), $e->getCode(), $e);
     }
     return $response;
 }
示例#8
0
 /**
  * Make HTTP Request.
  *
  * @return mixed[]
  */
 public function request($method, $resource, $params = [], $timeout = 10)
 {
     $headers = ['User-Agent: ' . $this->getAccountData()['appName'], 'Content-Type: application/json'];
     $storage = Storage::get();
     $hash = $storage->createHash($method, $resource, $params);
     $etag = $storage->get($hash);
     if ($etag) {
         $headers[] = 'If-None-Match: ' . $etag;
     }
     $message = new Request($method, $resource, self::BASE_URL . $this->getAccountData()['accountId'] . self::API_VERSION);
     $message->setHeaders($headers);
     if (!empty($params)) {
         // When attaching files set content as is
         if (array_key_exists('binary', $params)) {
             $message->setContent($params['binary']);
         } else {
             $message->setContent(json_encode($params));
         }
     }
     $response = new Response();
     $bc = $this->createCurl();
     $bc->setTimeout($timeout);
     if (!empty($this->getAccountData()['login']) && !empty($this->getAccountData()['password'])) {
         $bc->setOption(CURLOPT_USERPWD, $this->getAccountData()['login'] . ':' . $this->getAccountData()['password']);
     } elseif (!empty($this->getAccountData()['token'])) {
         $message->addHeader('Authorization: Bearer ' . $this->getAccountData()['token']);
     }
     $bc->send($message, $response);
     $storage->put($hash, trim($response->getHeader('ETag'), '"'));
     $data = new \stdClass();
     switch ($response->getStatusCode()) {
         case 201:
             $data = json_decode($response->getContent());
             $data->message = 'Created';
             break;
         case 204:
             $data->message = 'Resource succesfully deleted';
             break;
         case 304:
             $data->message = '304 Not Modified';
             break;
         case 400:
             $data->message = '400 Bad Request';
             break;
         case 403:
             $data->message = '403 Forbidden';
             break;
         case 404:
             $data->message = '404 Not Found';
             break;
         case 415:
             $data->message = '415 Unsupported Media Type';
             break;
         case 429:
             $data->message = '429 Too Many Requests. ' . $response->getHeader('Retry-After');
             break;
         case 500:
             $data->message = '500 Hmm, that isn�t right';
             break;
         case 502:
             $data->message = '502 Bad Gateway';
             break;
         case 503:
             $data->message = '503 Service Unavailable';
             break;
         case 504:
             $data->message = '504 Gateway Timeout';
             break;
         default:
             $data = json_decode($response->getContent());
             break;
     }
     return $data;
 }
 /**
  *
  * Performs an HTTP request
  *
  * @param string $url     The url to fetch
  * @param string $content The content of the request
  * @param array  $headers The headers of the request
  * @param string $method  The HTTP method to use
  *
  * @return string The response content
  */
 protected function httpRequest($url, $content = null, $headers = array(), $method = null)
 {
     if (null === $method) {
         $method = null === $content ? HttpRequestInterface::METHOD_GET : HttpRequestInterface::METHOD_POST;
     }
     $request = new HttpRequest($method, $url);
     $response = new HttpResponse();
     $request->setHeaders($headers);
     $request->setContent($content);
     $this->httpClient->send($request, $response);
     return $response;
 }
示例#10
0
 /**
  * Generic request manager to betaseries API
  *
  * @param string $queryString Query string of the request
  * @param string $method Http method of the request
  * @param array $params Array containing param list
  *
  * @return array Response of the request ("json_decoded")
  *
  * @throws PatbzhBetaseriesException In case betaseries api sends an error response
  */
 protected function request($queryString, $method, $params = null)
 {
     $queryStringComplement = '';
     if ($params !== null) {
         $queryStringComplement = '?' . http_build_query($params);
     }
     $request = new Request($method, $queryString . $queryStringComplement, self::BETA_SERIES_BASE_URL);
     $request->setHeaders(array('Accept' => 'text/json', 'X-BetaSeries-Version' => $this->getApiVersion(), 'X-BetaSeries-Key' => $this->getApiKey(), 'X-BetaSeries-Token' => $this->getOauthUserToken(), 'User-agent' => $this->getUserAgent()));
     $response = new Response();
     $this->httpClient->send($request, $response);
     $parsedResponse = json_decode($response->getContent(), true);
     if ($response->getStatusCode() == 400) {
         throw new PatbzhBetaseriesException($parsedResponse['errors'][0]['text'] . ' (' . $parsedResponse['errors'][0]['code'] . ')', $parsedResponse['errors'][0]['code']);
     }
     return $parsedResponse;
 }
 /**
  * Performs an HTTP request
  *
  * @param string $url     The url to fetch
  * @param string $content The content of the request
  * @param array  $headers The headers of the request
  * @param string $method  The HTTP method to use
  *
  * @return HttpResponse The response content
  */
 protected function httpRequest($url, $content = null, $headers = array(), $method = null)
 {
     if (null === $method) {
         $method = null === $content ? HttpRequestInterface::METHOD_GET : HttpRequestInterface::METHOD_POST;
     }
     $request = new HttpRequest($method, $url);
     $response = new HttpResponse();
     $headers = array_merge(array('User-Agent: HWIOAuthBundle (https://github.com/hwi/HWIOAuthBundle)'), $headers);
     $request->setHeaders($headers);
     $request->setContent($content);
     $this->httpClient->send($request, $response);
     return $response;
 }
 /**
  * Code below is borrowed from HWIOAuthBundle
  *
  * @see HWI\Bundle\OAuthBundle\OAuth\ResourceOwner\GenericOAuth1ResourceOwner
  */
 private function httpRequest($url, $content = null, $parameters = array(), $headers = array(), $method)
 {
     $authorization = 'Authorization: OAuth';
     foreach ($parameters as $key => $value) {
         $value = rawurlencode($value);
         $authorization .= ", {$key}=\"{$value}\"";
     }
     $headers[] = $authorization;
     $request = new Request($method, $url);
     $response = new Response();
     $request->setHeaders($headers);
     $request->setContent($content);
     $this->httpClient->send($request, $response);
     return $response;
 }