diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2014-12-15 15:20:24 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2014-12-28 17:17:14 +0100 |
commit | 5b00bc1d6e36bb81aee02da612195a048e90a8b4 (patch) | |
tree | 8280f2b6c5b8f0f5f2b058886fd1a2db558f159f | |
parent | 9f327457dc74f3e8fc4df17b0d44a99b86c22384 (diff) | |
download | nextcloud-server-5b00bc1d6e36bb81aee02da612195a048e90a8b4.tar.gz nextcloud-server-5b00bc1d6e36bb81aee02da612195a048e90a8b4.zip |
Adding basement for the direct download url
-rw-r--r-- | lib/private/connector/sabre/file.php | 13 | ||||
-rw-r--r-- | lib/private/connector/sabre/filesplugin.php | 10 | ||||
-rw-r--r-- | lib/private/files/storage/common.php | 13 | ||||
-rw-r--r-- | lib/public/files/storage.php | 10 |
4 files changed, 46 insertions, 0 deletions
diff --git a/lib/private/connector/sabre/file.php b/lib/private/connector/sabre/file.php index 54eea54552f..cb03f30e023 100644 --- a/lib/private/connector/sabre/file.php +++ b/lib/private/connector/sabre/file.php @@ -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 diff --git a/lib/private/connector/sabre/filesplugin.php b/lib/private/connector/sabre/filesplugin.php index 37798d8b162..b011a050a5c 100644 --- a/lib/private/connector/sabre/filesplugin.php +++ b/lib/private/connector/sabre/filesplugin.php @@ -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'; diff --git a/lib/private/files/storage/common.php b/lib/private/files/storage/common.php index b3eda1165ab..fe6aefbb42e 100644 --- a/lib/private/files/storage/common.php +++ b/lib/private/files/storage/common.php @@ -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 []; + } + } diff --git a/lib/public/files/storage.php b/lib/public/files/storage.php index 323d20db564..36d5b800df6 100644 --- a/lib/public/files/storage.php +++ b/lib/public/files/storage.php @@ -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); } |