• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/document/onedrivehandler.php
  • Класс: BitrixDiskDocumentOneDriveHandler
  • Вызов: OneDriveHandler::getSharedLink
protected function getSharedLink(FileData $fileData, $type = self::SHARED_LINK_TYPE_VIEW)
{
	if(!$this->checkRequiredInputParams($fileData->toArray(), array(
		'id',
	)))
	{
		return null;
	}

	if($type !== self::SHARED_LINK_TYPE_VIEW && $type !== self::SHARED_LINK_TYPE_EDIT)
	{
		$this->errorCollection[] = new Error('Invalid value for type', self::ERROR_REQUIRED_PARAMETER);
		return null;
	}

	$http = new HttpClient(array(
		'redirect' => false,
		'socketTimeout' => 10,
		'streamTimeout' => 30,
		'version' => HttpClient::HTTP_1_1,
	));

	$http->setHeader('Content-Type', 'application/json; charset=UTF-8');
	$http->setHeader('Authorization', "bearer {$this->getAccessToken()}");

	$postFields = "{"type":"{$type}"}";
	if($http->post($this->getApiUrlRoot() . "/drive/items/{$fileData->getId()}/" . static::SUFFIX_TO_CREATE_LINK, $postFields) === false)
	{
		$errorString = implode('; ', array_keys($http->getError()));
		$this->errorCollection->add(array(
			new Error($errorString, self::ERROR_SHARED_EDIT_LINK)
		));
		return null;
	}

	if(!$this->checkHttpResponse($http))
	{
		return null;
	}

	$responseData = Json::decode($http->getResult());
	if($responseData === null)
	{
		$this->errorCollection->add(array(
			new Error('Could not decode response as json', self::ERROR_BAD_JSON)
		));
		return null;
	}

	if(empty($responseData['link']['webUrl']))
	{
		$this->errorCollection->add(array(
			new Error('Could not find webUrl in response', self::ERROR_SHARED_EDIT_LINK)
		));
		return null;
	}

	return $responseData['link']['webUrl'];
}