public function testResponseContentGetsPopulated()
 {
     $collector = new ContentCollector();
     $collector->collect(null, self::THE_BODY);
     $this->assertEquals(self::THE_BODY, $collector->retrieve());
 }
 /**
  * Execute a Request object via cURL
  *
  * @param Request $request the request to execute
  * @param array $options additional curl options to set/override
  *
  * @return Response
  *
  * @throws CurlErrorException 
  */
 private function handleRaw(Request $request)
 {
     $curl = $this->lastCurlRequest = $this->getCurlRequest();
     $curl->setOptionArray(array(CURLOPT_URL => $request->getUri(), CURLOPT_HTTPHEADER => $this->buildHeadersArray($request->headers), CURLINFO_HEADER_OUT => true));
     $curl->setMethod($request->getMethod());
     if ("POST" === $request->getMethod()) {
         $this->setPostFields($curl, $request);
     }
     if ("PUT" === $request->getMethod() && count($request->files->all()) > 0) {
         $file = current($request->files->all());
         $curl->setOptionArray(array(CURLOPT_INFILE => '@' . $file->getRealPath(), CURLOPT_INFILESIZE => $file->getSize()));
     }
     $content = new ContentCollector();
     $headers = new HeaderCollector();
     // These options must not be tampered with to ensure proper functionality
     $curl->setOptionArray(array(CURLOPT_HEADERFUNCTION => array($headers, "collect"), CURLOPT_WRITEFUNCTION => array($content, "collect")));
     $curl->execute();
     $response = new Response($content->retrieve(), $headers->getCode(), $headers->retrieve());
     $response->setProtocolVersion($headers->getVersion());
     $response->setStatusCode($headers->getCode(), $headers->getMessage());
     return $response;
 }