с токнами и авторизацией все в порядке.
Остальные методы работают.
Проблемы только в отправке файла.
Полный листинг метода
public function request($uri, $method = 'GET', array $headers = array(), array $data = array())
{
if ('GET' === $method) {
if (!empty($data)) {
$data = '?' . http_build_query($data, '', '&');
} else {
$data = '';
}
$headers[] = 'Cache-Control: no-cache';
$headers[] = 'Content-Type: application/json';
$curlOptions[\CURLOPT_HTTPGET] = true;
$curlOptions[\CURLOPT_RETURNTRANSFER] = true;
$curlOptions[\CURLOPT_URL] = $uri . $data;
} elseif ('POST' === $method) {
$headers[] = 'Cache-Control: no-cache';
$headers[] = 'Content-Type: application/json';
$curlOptions[\CURLOPT_POST] = true;
$curlOptions[\CURLOPT_RETURNTRANSFER] = true;
$curlOptions[\CURLOPT_URL] = $uri;
$curlOptions[\CURLOPT_POSTFIELDS] = json_encode($data);
$headers[] = 'Content-Length: ' . strlen(json_encode($data));
} elseif ('FILE' === $method) {
$data = Array('document' => '@' . $data['file']);
$headers[] = 'Cache-Control: no-cache';
$headers[] = 'Content-Type: multipart/form-data';
$curlOptions[\CURLOPT_POST] = true;
$curlOptions[\CURLOPT_RETURNTRANSFER] = true;
$curlOptions[\CURLOPT_URL] = $uri;
$curlOptions[\CURLOPT_POSTFIELDS] = $data;
} else {
die(sprintf('An HTTP method "%s" is not supported. Use "GET" or "POST" or "FILE".', $method));
}
$curlOptions[\CURLOPT_HTTPHEADER] = $headers;
$curl = $this->getCurl();
curl_setopt_array($curl, $curlOptions);
$response = curl_exec($curl);
if (false === $response) {
var_dump(curl_getinfo($curl));
$error = curl_error($curl);
$errorCode = curl_errno($curl);
die('Curl error: ' . $error. ' code: ' . $errorCode);
}
$httpCode = curl_getinfo($this->curl, \CURLINFO_HTTP_CODE);
return array($httpCode, $response);
}