/**
* Обертка для отправки подписанного запроса через curl
*
* @param $url
* @param string $method
* @param array $data - POST данные
* @param $opts - доп. параметры для curl
* @return mixed
*/
public function doCurl($url, $method = "POST", $data = array(), $opts = array())
{
$ch = curl_init($url);
$opts += array(CURLOPT_RETURNTRANSFER => 1, CURLOPT_HEADER => 0, CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_SSL_VERIFYHOST => 0);
if ($method == "POST") {
$opts[CURLOPT_POST] = TRUE;
$opts[CURLOPT_POSTFIELDS] = http_build_query($data);
}
$oauth = new OAuthSimple($this->app_key, $this->app_secret);
if (!$this->request_token && $this->token) {
$this->request_token = $this->token;
}
if ($this->request_token) {
$oauth->setParameters(array('oauth_token' => $this->request_token['oauth_token']));
$oauth->signatures(array('oauth_secret' => $this->request_token['oauth_token_secret']));
}
if ($method == "POST" && count($data)) {
$oauth->setParameters(http_build_query($data));
}
$path = $url;
$query = strrchr($url, '?');
if (!empty($query)) {
$oauth->setParameters(substr($query, 1));
$path = substr($url, 0, -strlen($query));
}
$signed = $oauth->sign(array('action' => $method, 'path' => $path));
$opts[CURLOPT_HTTPHEADER][] = "Authorization: " . $signed['header'];
if ($method == "PUT") {
$opts[CURLOPT_CUSTOMREQUEST] = "PUT";
}
curl_setopt_array($ch, $opts);
$result = curl_exec($ch);
return $result;
}