コード例 #1
0
ファイル: CurlSender.php プロジェクト: h4kuna/curl
 /**
  * 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;
 }