Example #1
0
 /**
  * @param CurlWrapper $curl
  *
  * @return Response|NULL
  */
 protected function buildRedirectResponse(CurlWrapper $curl)
 {
     if ($curl->info['redirect_count'] === 0) {
         return NULL;
     }
     $previous = $last = NULL;
     /** @var Response $last */
     $parts = Strings::split($curl->responseHeaders, '~(HTTP/\\d\\.\\d\\s\\d+\\s.*)~m', PREG_SPLIT_NO_EMPTY);
     while ($rawHeaders = array_shift($parts)) {
         if ($http = Strings::match($rawHeaders, CurlWrapper::VERSION_AND_STATUS)) {
             if ($http['code'] < 200) {
                 continue;
             }
             $rawHeaders .= array_shift($parts);
         }
         if (!$parts) {
             $curl->responseHeaders = $rawHeaders;
             return $last;
         }
         if ($headers = CurlWrapper::parseHeaders($rawHeaders)) {
             $previous = new Response($curl, $headers);
             if ($last !== NULL) {
                 $previous->setPrevious($last);
             }
         }
         $last = $previous;
     }
     return $last;
 }