• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/document/yandexdiskhandler.php
  • Класс: BitrixDiskDocumentYandexDiskHandler
  • Вызов: YandexDiskHandler::listFolder
public function listFolder($path, $folderId)
{
	if($path === '/')
	{
		$folderId = urlencode('/');
	}
	else
	{
		$folderId = $this->getForApiDecodedId($folderId);
	}

	$http = new HttpClient(array(
		'socketTimeout' => 10,
		'streamTimeout' => 30,
		'version' => HttpClient::HTTP_1_1,
	));
	$http->setHeader('Content-Type', 'application/json; charset=UTF-8');
	$http->setHeader('Authorization', "OAuth {$this->getAccessToken()}");

	if($http->get(self::API_URL_V1 . "/resources?path={$folderId}&limit=200") === false)
	{
		$errorString = implode('; ', array_keys($http->getError()));
		$this->errorCollection->add(array(
			new Error($errorString, self::ERROR_HTTP_LIST_FOLDER)
		));
		return null;
	}

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

	$items = Json::decode($http->getResult());
	if($items === null)
	{
		$this->errorCollection->add(array(
			new Error('Could not decode response as json', self::ERROR_BAD_JSON)
		));
		return null;
	}
	if(!isset($items['_embedded']['items']))
	{
		$this->errorCollection->add(array(
			new Error('Could not find items in response', self::ERROR_HTTP_LIST_FOLDER)
		));
		return null;
	}

	$reformatItems = array();
	foreach($items['_embedded']['items'] as $item)
	{
		$isFolder = $item['type'] === 'dir';
		$dateTime = new DateTime($item['modified']);
		$itemPath = mb_substr($item['path'], 5); //disk:
		$pseudoId = base64_encode($itemPath);
		$reformatItems[$pseudoId] = array(
			'id' => $pseudoId,
			'name' => $item['name'],
			'type' => $isFolder? 'folder' : 'file',

			'size' => $isFolder? '' : CFile::formatSize($item['size']),
			'sizeInt' => $isFolder? '' : $item['size'],
			'modifyBy' => '',
			'modifyDate' => $dateTime->format('d.m.Y'),
			'modifyDateInt' => $dateTime->getTimestamp(),
			'provider' => static::getCode(),
		);

		if(!$isFolder)
		{
			$reformatItems[$pseudoId]['storage'] = '';
			$reformatItems[$pseudoId]['ext'] = getFileExtension($item['name']);
		}
	}
	unset($item);

	return $reformatItems;
}