- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/sync/googleapitransport.php
- Класс: BitrixCalendarSyncGoogleApiTransport
- Вызов: GoogleApiTransport::doRequest
private function doRequest($type, $url, $requestParams = '')
{
$this->errors = $response = [];
if (!in_array($type, [WebHttpClient::HTTP_PATCH, WebHttpClient::HTTP_PUT, WebHttpClient::HTTP_DELETE, WebHttpClient::HTTP_GET, WebHttpClient::HTTP_POST], true))
{
throw new ArgumentException('Bad request type');
}
$this->client->query($type, $url, ($requestParams ?: null));
//Only "OK" response is acceptable.
if ($this->client->getStatus() === 200)
{
$contentType = $this->client->getHeaders()->getContentType();
if ($contentType === 'multipart/mixed')
{
$response = $this->multipartDecode($this->client->getResult());
}
else
{
try
{
$response = WebJson::decode($this->client->getResult());
}
catch (ArgumentException $exception)
{
$response = null;
}
}
}
else
{
try
{
$error = WebJson::decode($this->client->getResult());
$this->errors[] = ["code" => "CONNECTION", "message" => "[" . $error['error']['code'] . "] " . $error['error']['message']];
}
catch (ArgumentException $exception)
{
foreach($this->client->getError() as $code => $error)
{
$this->errors[] = ["code" => $code, "message" => $error];
}
}
}
if ($this->requestLogger)
{
$this->requestLogger->write([
'requestParams' => $requestParams,
'url' => $url,
'method' => $type,
'statusCode' => $this->client->getStatus(),
'response' => $this->prepareResponseForDebug($response),
'error' => $this->prepareErrorForDebug(),
]);
}
return $response;
}