• Модуль: 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;
}