• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/google/importmanager.php
  • Класс: BitrixCalendarSyncGoogleImportManager
  • Вызов: ImportManager::requestConnectionId
public function requestConnectionId(): Result
{
	$result = new Result();
	try
	{
		// TODO: Remake it: move this logic to parent::request().
		// Or, better, in separate class.
		$this->httpClient->query(
			HttpClient::HTTP_GET,
			$this->prepareCalendarListUrlWithId(self::CALENDAR_PRIMARY_ID)
		);

		try
		{
			$externalResult = $this->parseResponse($this->httpClient->getResult());
		}
		catch (Exception $e)
		{
			return $result->addError(new Error($e->getMessage()));
		}

		if ($this->isRequestSuccess())
		{
			$requestResult = $this->parseResponse($this->httpClient->getResult());

			return $result->setData(['id' => $requestResult['id']]);
		}
		$helper = new Helper();

		if ($helper->isNotValidSyncTokenError($this->prepareError($externalResult)))
		{
			$this->connection->setToken(null);
			$result->addError(new Error('Auth error on getting connection Id', 410));
			return $result;
		}

		if ($helper->isMissingRequiredAuthCredential($this->prepareError($externalResult)))
		{
			$this->handleUnauthorize($this->connection);
			$result->addError(new Error('Auth error on getting sections', 401));

			return $result;
		}

		return $result->addError(new Error('Do not sync sections'));
	}
	catch (Exception $e)
	{
		return $result->addError(new Error('Failed to get connection name'));
	}
}