- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/document/dropboxhandler.php
- Класс: BitrixDiskDocumentDropboxHandler
- Вызов: DropboxHandler::listFolder
public function listFolder($path, $folderId)
{
if($path === '/')
{
$path = '';
}
$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', "Bearer {$this->getAccessToken()}");
$postFields = Json::encode(
array(
'path' => $path,
'recursive' => false,
'include_deleted' => false,
)
);
if($http->post(self::API_URL . "/files/list_folder", $postFields) === 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['entries']))
{
$this->errorCollection->add(array(
new Error('Could not find items in response', self::ERROR_HTTP_LIST_FOLDER)
));
return null;
}
$reformatItems = array();
foreach($items['entries'] as $item)
{
$isFolder = $item['.tag'] === 'folder';
if(!$isFolder)
{
$dateTime = new DateTime($item['client_modified']);
}
$reformatItems[$item['id']] = array(
'id' => $item['id'],
'name' => bx_basename($item['name']),
'type' => $isFolder? 'folder' : 'file',
'size' => $isFolder? '' : CFile::formatSize($item['size']),
'sizeInt' => $isFolder? '' : $item['size'],
'modifyBy' => '',
'modifyDate' => $isFolder? '' : $dateTime->format('d.m.Y'),
'modifyDateInt' => $isFolder? '0' : $dateTime->getTimestamp(),
'provider' => static::getCode(),
);
if(!$isFolder)
{
$reformatItems[$item['id']]['storage'] = '';
$reformatItems[$item['id']]['ext'] = getFileExtension($reformatItems[$item['id']]['name']);
}
}
unset($item);
return $reformatItems;
}