public function executeRequest(Request $request, $redirectsLimit = 10) { $requestHeaders = $request->getHeaders(); $accessToken = $this->oauthApi->getToken(); if (false === $accessToken) { throw new OAuthError("The access token that you've provided is not valid, check your credentials or endpoint."); } $bearerAuth = new BearerAuth($accessToken->getAccessToken()); $this->httpClient->addSubscriber($bearerAuth); $httpRequest = $this->httpClient->createRequest($method = $request->getMethod(), $uri = $request->getResourceUrl(), $headers = $request->getHeaders(), $body = $request->getBody()); $this->addQueryString($request->getQueryString(), $httpRequest); $response = $httpRequest->send(); if ($response->isRedirect() && $redirectsLimit) { $request->setResourceUrl($response->getHeader('location')); return $this->executeRequest($request, --$redirectsLimit); } return new DefaultResponse($response->getStatusCode(), $response->getContentType(), $response->getBody(true), $response->getContentLength()); }