/** * Creates CurlWrapper from given Request object. * * @param Request $request * @param string $requestId * @throws DirectoryNotWritableException * @return CurlWrapper */ protected function initRequest(Request $request, &$requestId) { // combine setup $request->options += $this->options; $request->headers += $this->headers; // cookies if ($request->cookies) { $request->headers['Cookie'] = $request->getCookies(); } // wrap $curl = new CurlWrapper($request->getUrl(), $request->method); $curl->setOptions($request->options); $curl->setHeaders($request->headers); $curl->setPost($request->post, $request->files); // fallback when safe_mode if (!$this->canFollowRedirect()) { $curl->setOption('followLocation', NULL); } // method & prepare download if ($request->isMethod(Request::DOWNLOAD)) { if (!is_dir($this->downloadDir)) { throw new DirectoryNotWritableException("Please provide a writable directory for download."); } FileResponse::prepareDownload($curl, $this->downloadDir); } else { $curl->setOption('header', TRUE); } // logging if ($this->logger) { $requestId = $this->logger->request($request); } return $curl; }