Browse Source

Adding basement for the direct download url

tags/v8.0.0alpha1
Thomas Müller 9 years ago
parent
commit
5b00bc1d6e

+ 13
- 0
lib/private/connector/sabre/file.php View File

@@ -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

+ 10
- 0
lib/private/connector/sabre/filesplugin.php View File

@@ -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';


+ 13
- 0
lib/private/files/storage/common.php View File

@@ -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 [];
}

}

+ 10
- 0
lib/public/files/storage.php View File

@@ -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);
}

Loading…
Cancel
Save