Example #1
0
 /**
  * @param Request $request
  * @param CurlWrapper $curl
  * @param string $requestId
  * @param integer $cycles
  * @throws BadStatusException
  * @throws FailedRequestException
  * @return Response
  */
 protected function finishRequest(Request $request, CurlWrapper $curl, $requestId, $cycles)
 {
     // request failed
     if (!$curl->response) {
         throw new FailedRequestException($curl, $this->queriedRequest);
     }
     // build & check response
     $response = $this->buildResponse($curl);
     if (($statusCode = $response->headers['Status-Code']) >= 400 && $statusCode < 600) {
         throw new BadStatusException($response->headers['Status'], $request, $response);
     }
     // force redirect on Location header
     if ($this->isForcingFollowRedirect($curl, $response)) {
         $request = $this->queriedRequest->followRedirect($response);
         $response = $this->sendRequest($request, ++$cycles)->setPrevious($response);
         // override
     }
     // log response
     if ($this->logger && isset($requestId)) {
         $this->logger->response($response, $requestId);
     }
     // return
     return $response;
 }