Skip to content
Snippets Groups Projects
Commit 5b00bc1d authored by Thomas Müller's avatar Thomas Müller
Browse files

Adding basement for the direct download url

parent 9f327457
No related branches found
No related tags found
No related merge requests found
......@@ -226,6 +226,19 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements \Sabre\
return \OC_Helper::getSecureMimeType($mimeType);
}
public function getDirectDownload() {
if (\OCP\App::isEnabled('encryption')) {
return [];
}
/** @var \OCP\Files\Storage $storage */
list($storage, $internalPath) = $this->fileView->resolvePath($this->path);
if (is_null($storage)) {
return [];
}
return $storage->getDirectDownload($internalPath);
}
/**
* @param resource $data
* @return null|string
......
......@@ -39,6 +39,7 @@ class OC_Connector_Sabre_FilesPlugin extends \Sabre\DAV\ServerPlugin
$server->protectedProperties[] = '{' . self::NS_OWNCLOUD . '}id';
$server->protectedProperties[] = '{' . self::NS_OWNCLOUD . '}permissions';
$server->protectedProperties[] = '{' . self::NS_OWNCLOUD . '}size';
$server->protectedProperties[] = '{' . self::NS_OWNCLOUD . '}dDU';
$this->server = $server;
$this->server->subscribeEvent('beforeGetProperties', array($this, 'beforeGetProperties'));
......@@ -80,6 +81,15 @@ class OC_Connector_Sabre_FilesPlugin extends \Sabre\DAV\ServerPlugin
}
}
if ($node instanceof OC_Connector_Sabre_File) {
/** @var $node OC_Connector_Sabre_File */
$directDownloadUrl = $node->getDirectDownload();
if (isset($directDownloadUrl['url'])) {
$directDownloadUrlPropertyName = '{' . self::NS_OWNCLOUD . '}dDU';
$returnedProperties[200][$directDownloadUrlPropertyName] = $directDownloadUrl['url'];
}
}
if ($node instanceof OC_Connector_Sabre_Directory) {
$sizePropertyName = '{' . self::NS_OWNCLOUD . '}size';
......
......@@ -437,4 +437,17 @@ abstract class Common implements \OC\Files\Storage\Storage {
public function instanceOfStorage($class) {
return is_a($this, $class);
}
/**
* A custom storage implementation can return an url for direct download of a give file.
*
* For now the returned array can hold the parameter url - in future more attributes might follow.
*
* @param string $path
* @return array
*/
public function getDirectDownload($path) {
return [];
}
}
......@@ -335,4 +335,14 @@ interface Storage {
* @return bool
*/
public function instanceOfStorage($class);
/**
* A custom storage implementation can return an url for direct download of a give file.
*
* For now the returned array can hold the parameter url - in future more attributes might follow.
*
* @param string $path
* @return array
*/
public function getDirectDownload($path);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment