/** * @param Request $request * @return resource */ protected function buildCurlResource(Request $request) { $ch = curl_init((string) $request->getUrl()); $options = $this->curlOptions; $options[CURLOPT_CUSTOMREQUEST] = $request->getMethod(); // configuring a POST request if ($request->getPost()) { $options[CURLOPT_POSTFIELDS] = $request->getPost(); } if ($request->isHead()) { $options[CURLOPT_NOBODY] = TRUE; } elseif ($request->isGet()) { $options[CURLOPT_HTTPGET] = TRUE; } // disable the 'Expect: 100-continue' behaviour. This causes CURL to wait // for 2 seconds if the server does not support this header. $options[CURLOPT_HTTPHEADER]['Expect'] = ''; $tmp = array(); foreach ($request->getHeaders() + $options[CURLOPT_HTTPHEADER] as $name => $value) { $tmp[] = trim("{$name}: {$value}"); } $options[CURLOPT_HTTPHEADER] = $tmp; // execute request curl_setopt_array($ch, $options); $this->onRequest($request, $options); return $ch; }