• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/webdavserver.php
  • Класс: CDavWebDavServer
  • Вызов: CDavWebDavServer::GET
protected function GET(&$arResult)
{
	/** @var CDavRequest $request */
	$request = $this->request;
	$response = $this->response;
	$requestPath = Encoding::convertEncoding($request->getPath(), 'UTF-8', SITE_CHARSET);

	$path = $request->GetPath();

	list($storage, $path) = $this->parsePath($requestPath);

	if (!$storage)
		return '404 Not Found';

	$objectId = Driver::getInstance()->getUrlManager()->resolveObjectIdFromPath($storage, $path);

	if (!$objectId)
	{
		return '404 Not Found';
	}
	/** @var File|Folder $object */
	$object = BaseObject::loadById($objectId);
	if (!$object)
	{
		return '404 Not Found';
	}
	if (!$object->canRead($object->getStorage()->getCurrentUserSecurityContext()))
	{
		return '403 Forbidden';
	}
	if ($object instanceof Folder)
	{
		return '501 Not Implemented';
	}

	$fileArray = $object->getFile();
	if (!$fileArray)
	{
		return '404 Not Found';
	}

	$response = BitrixMainEngineResponseBFile::createByFileId($object->getFileId(), $object->getName());
	BitrixMainApplication::getInstance()->end(0, $response);
}