Extend share info

The data from the share_external is not to much. Thus we enrich this
data with info from the filecache.

This allows endpoints using this to actually show usefull information.

The filecache might not be up to date but that is a sacrifice we need to
make in terms of speed. Else the number of remote PROPFINDS grows
lineary with the number of remote shares wich will make this endpoint
practically unusable.
This commit is contained in:
Roeland Jago Douma 2015-10-01 15:41:24 +02:00
parent 0d3009951f
commit c3e7d324c5
1 changed files with 23 additions and 1 deletions

View File

@ -91,6 +91,23 @@ class Remote {
return new \OC_OCS_Result(null, 404, "wrong share ID, share doesn't exist.");
}
/**
* @param array $share Share with info from the share_external table
* @return enriched share info with data from the filecache
*/
private static function extendShareInfo($share) {
$view = new \OC\Files\View('/' . \OC_User::getUser() . '/files/');
$info = $view->getFileInfo($shares['mountpoint']);
$share['mimetype'] = $info->getMimetype();
$share['mtime'] = $info->getMtime();
$share['permissions'] = $info->getPermissions();
$share['type'] = $info->getType();
$share['file_id'] = $info->getId();
return $share;
}
/**
* List accepted remote shares
*
@ -106,8 +123,12 @@ class Remote {
\OC::$server->getNotificationManager(),
\OC_User::getUser()
);
$shares = $externalManager->getAcceptedShares();
$shares = array_map('self::extendShareInfo', $shares);
return new \OC_OCS_Result($externalManager->getAcceptedShares());
return new \OC_OCS_Result($shares);
}
/**
@ -131,6 +152,7 @@ class Remote {
if ($shareInfo === false) {
return new \OC_OCS_Result(null, 404, 'share does not exist');
} else {
$shareInfo = self::extendShareInfo($shareInfo);
return new \OC_OCS_Result($shareInfo);
}
}