/**
* Prepare request for execution, creating cURL resource for it.
* @param Request $request request instance.
* @return array cURL options.
*/
private function prepare($request)
{
$request->prepare();
$curlOptions = $this->composeCurlOptions($request->getOptions());
$method = strtoupper($request->getMethod());
switch ($method) {
case 'GET':
break;
case 'POST':
$curlOptions[CURLOPT_POST] = true;
break;
default:
$curlOptions[CURLOPT_CUSTOMREQUEST] = $method;
}
$content = $request->getContent();
if ($content !== null) {
$curlOptions[CURLOPT_POSTFIELDS] = $content;
}
$curlOptions[CURLOPT_RETURNTRANSFER] = true;
$curlOptions[CURLOPT_URL] = $request->getUrl();
$curlOptions[CURLOPT_HTTPHEADER] = $request->composeHeaderLines($request);
return $curlOptions;
}