diff --git a/src/Facebook/HttpClients/FacebookGuzzleHttpClient.php b/src/Facebook/HttpClients/FacebookGuzzleHttpClient.php index 8feb7cb6d..12d7f0b09 100644 --- a/src/Facebook/HttpClients/FacebookGuzzleHttpClient.php +++ b/src/Facebook/HttpClients/FacebookGuzzleHttpClient.php @@ -27,6 +27,7 @@ use Facebook\Exceptions\FacebookSDKException; use GuzzleHttp\Client; +use GuzzleHttp\Psr7\Request; use GuzzleHttp\Message\ResponseInterface; use GuzzleHttp\Ring\Exception\RingException; use GuzzleHttp\Exception\RequestException; @@ -41,9 +42,9 @@ class FacebookGuzzleHttpClient implements FacebookHttpClientInterface /** * @param \GuzzleHttp\Client|null The Guzzle client. */ - public function __construct(Client $guzzleClient = null) + public function __construct() { - $this->guzzleClient = $guzzleClient ?: new Client(); + $this->guzzleClient = new Client(); } /** @@ -51,47 +52,26 @@ public function __construct(Client $guzzleClient = null) */ public function send($url, $method, $body, array $headers, $timeOut) { - $options = [ - 'headers' => $headers, - 'body' => $body, - 'timeout' => $timeOut, - 'connect_timeout' => 10, - 'verify' => __DIR__ . '/certs/DigiCertHighAssuranceEVRootCA.pem', - ]; - $request = $this->guzzleClient->createRequest($method, $url, $options); + $request = new Request($method, $url, $headers, $body); try { - $rawResponse = $this->guzzleClient->send($request); - } catch (RequestException $e) { - $rawResponse = $e->getResponse(); - - if ($e->getPrevious() instanceof RingException || !$rawResponse instanceof ResponseInterface) { - throw new FacebookSDKException($e->getMessage(), $e->getCode()); - } + $response = $this->guzzleClient->send($request, ['timeout' => $timeOut, 'http_errors' => false]); + } catch (GuzzleHttp\Exception\RequestException $e) { + throw new FacebookSDKException($e->getMessage(), $e->getCode()); } - $rawHeaders = $this->getHeadersAsString($rawResponse); - $rawBody = $rawResponse->getBody(); - $httpStatusCode = $rawResponse->getStatusCode(); - - return new GraphRawResponse($rawHeaders, $rawBody, $httpStatusCode); - } - - /** - * Returns the Guzzle array of headers as a string. - * - * @param ResponseInterface $response The Guzzle response. - * - * @return string - */ - public function getHeadersAsString(ResponseInterface $response) - { - $headers = $response->getHeaders(); - $rawHeaders = []; - foreach ($headers as $name => $values) { - $rawHeaders[] = $name . ": " . implode(", ", $values); + $httpStatusCode = $response->getStatusCode(); + $responseHeaders = $response->getHeaders(); + foreach ($responseHeaders as $key => $values) { + $responseHeaders[$key] = implode(', ', $values); } - return implode("\r\n", $rawHeaders); + $responseBody = $response->getBody()->getContents(); + + return new GraphRawResponse( + $responseHeaders, + $responseBody, + $httpStatusCode + ); } }