public function sendRequest(RequestInterface $request)
{
$curl = curl_init();
$default_curl_options = $this->getCurlDefaultOptions($request);
foreach ($this->getCurlOptions() as $curl_option_key => $curl_option_value) {
if (!is_null($curl_option_value)) {
$default_curl_options[$curl_option_key] = $curl_option_value;
}
}
curl_setopt_array($curl, $default_curl_options);
if (RequestInterface::METHOD_POST == $request->getMethod()) {
curl_setopt_array($curl, array(CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $request->getBody()));
}
$raw = curl_exec($curl);
if (false === $raw) {
$errorMessage = curl_error($curl);
curl_close($curl);
throw new \Bitpay\Client\ConnectionException($errorMessage);
}
/** @var ResponseInterface */
$response = Response::createFromRawResponse($raw);
curl_close($curl);
return $response;
}