Commit 90bd53c9 authored by Thomas Müller's avatar Thomas Müller
Browse files

Merge pull request #20567 from owncloud/dav-internalfileidprop

Add internal fileid to webdav response
parents 8d74e28a 978303e0
...@@ -37,6 +37,7 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin { ...@@ -37,6 +37,7 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
// namespace // namespace
const NS_OWNCLOUD = 'http://owncloud.org/ns'; const NS_OWNCLOUD = 'http://owncloud.org/ns';
const FILEID_PROPERTYNAME = '{http://owncloud.org/ns}id'; const FILEID_PROPERTYNAME = '{http://owncloud.org/ns}id';
const INTERNAL_FILEID_PROPERTYNAME = '{http://owncloud.org/ns}fileid';
const PERMISSIONS_PROPERTYNAME = '{http://owncloud.org/ns}permissions'; const PERMISSIONS_PROPERTYNAME = '{http://owncloud.org/ns}permissions';
const DOWNLOADURL_PROPERTYNAME = '{http://owncloud.org/ns}downloadURL'; const DOWNLOADURL_PROPERTYNAME = '{http://owncloud.org/ns}downloadURL';
const SIZE_PROPERTYNAME = '{http://owncloud.org/ns}size'; const SIZE_PROPERTYNAME = '{http://owncloud.org/ns}size';
...@@ -98,6 +99,7 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin { ...@@ -98,6 +99,7 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
$server->xmlNamespaces[self::NS_OWNCLOUD] = 'oc'; $server->xmlNamespaces[self::NS_OWNCLOUD] = 'oc';
$server->protectedProperties[] = self::FILEID_PROPERTYNAME; $server->protectedProperties[] = self::FILEID_PROPERTYNAME;
$server->protectedProperties[] = self::INTERNAL_FILEID_PROPERTYNAME;
$server->protectedProperties[] = self::PERMISSIONS_PROPERTYNAME; $server->protectedProperties[] = self::PERMISSIONS_PROPERTYNAME;
$server->protectedProperties[] = self::SIZE_PROPERTYNAME; $server->protectedProperties[] = self::SIZE_PROPERTYNAME;
$server->protectedProperties[] = self::DOWNLOADURL_PROPERTYNAME; $server->protectedProperties[] = self::DOWNLOADURL_PROPERTYNAME;
...@@ -175,6 +177,10 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin { ...@@ -175,6 +177,10 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
return $node->getFileId(); return $node->getFileId();
}); });
$propFind->handle(self::INTERNAL_FILEID_PROPERTYNAME, function() use ($node) {
return $node->getInternalFileId();
});
$propFind->handle(self::PERMISSIONS_PROPERTYNAME, function() use ($node) { $propFind->handle(self::PERMISSIONS_PROPERTYNAME, function() use ($node) {
$perms = $node->getDavPermissions(); $perms = $node->getDavPermissions();
if ($this->isPublic) { if ($this->isPublic) {
......
...@@ -206,6 +206,13 @@ abstract class Node implements \Sabre\DAV\INode { ...@@ -206,6 +206,13 @@ abstract class Node implements \Sabre\DAV\INode {
return null; return null;
} }
/**
* @return string
*/
public function getInternalFileId() {
return $this->info->getId();
}
/** /**
* @return string|null * @return string|null
*/ */
......
...@@ -11,6 +11,7 @@ namespace OCA\DAV\Tests\Unit\Connector\Sabre; ...@@ -11,6 +11,7 @@ namespace OCA\DAV\Tests\Unit\Connector\Sabre;
class FilesPlugin extends \Test\TestCase { class FilesPlugin extends \Test\TestCase {
const GETETAG_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::GETETAG_PROPERTYNAME; const GETETAG_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::GETETAG_PROPERTYNAME;
const FILEID_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::FILEID_PROPERTYNAME; const FILEID_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::FILEID_PROPERTYNAME;
const INTERNAL_FILEID_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::INTERNAL_FILEID_PROPERTYNAME;
const SIZE_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::SIZE_PROPERTYNAME; const SIZE_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::SIZE_PROPERTYNAME;
const PERMISSIONS_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::PERMISSIONS_PROPERTYNAME; const PERMISSIONS_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::PERMISSIONS_PROPERTYNAME;
const LASTMODIFIED_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::LASTMODIFIED_PROPERTYNAME; const LASTMODIFIED_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::LASTMODIFIED_PROPERTYNAME;
...@@ -69,7 +70,10 @@ class FilesPlugin extends \Test\TestCase { ...@@ -69,7 +70,10 @@ class FilesPlugin extends \Test\TestCase {
$node->expects($this->any()) $node->expects($this->any())
->method('getFileId') ->method('getFileId')
->will($this->returnValue(123)); ->will($this->returnValue('00000123instanceid'));
$node->expects($this->any())
->method('getInternalFileId')
->will($this->returnValue('123'));
$node->expects($this->any()) $node->expects($this->any())
->method('getEtag') ->method('getEtag')
->will($this->returnValue('"abc"')); ->will($this->returnValue('"abc"'));
...@@ -90,6 +94,7 @@ class FilesPlugin extends \Test\TestCase { ...@@ -90,6 +94,7 @@ class FilesPlugin extends \Test\TestCase {
array( array(
self::GETETAG_PROPERTYNAME, self::GETETAG_PROPERTYNAME,
self::FILEID_PROPERTYNAME, self::FILEID_PROPERTYNAME,
self::INTERNAL_FILEID_PROPERTYNAME,
self::SIZE_PROPERTYNAME, self::SIZE_PROPERTYNAME,
self::PERMISSIONS_PROPERTYNAME, self::PERMISSIONS_PROPERTYNAME,
self::DOWNLOADURL_PROPERTYNAME, self::DOWNLOADURL_PROPERTYNAME,
...@@ -125,7 +130,8 @@ class FilesPlugin extends \Test\TestCase { ...@@ -125,7 +130,8 @@ class FilesPlugin extends \Test\TestCase {
); );
$this->assertEquals('"abc"', $propFind->get(self::GETETAG_PROPERTYNAME)); $this->assertEquals('"abc"', $propFind->get(self::GETETAG_PROPERTYNAME));
$this->assertEquals(123, $propFind->get(self::FILEID_PROPERTYNAME)); $this->assertEquals('00000123instanceid', $propFind->get(self::FILEID_PROPERTYNAME));
$this->assertEquals('123', $propFind->get(self::INTERNAL_FILEID_PROPERTYNAME));
$this->assertEquals(null, $propFind->get(self::SIZE_PROPERTYNAME)); $this->assertEquals(null, $propFind->get(self::SIZE_PROPERTYNAME));
$this->assertEquals('DWCKMSR', $propFind->get(self::PERMISSIONS_PROPERTYNAME)); $this->assertEquals('DWCKMSR', $propFind->get(self::PERMISSIONS_PROPERTYNAME));
$this->assertEquals('http://example.com/', $propFind->get(self::DOWNLOADURL_PROPERTYNAME)); $this->assertEquals('http://example.com/', $propFind->get(self::DOWNLOADURL_PROPERTYNAME));
...@@ -186,7 +192,7 @@ class FilesPlugin extends \Test\TestCase { ...@@ -186,7 +192,7 @@ class FilesPlugin extends \Test\TestCase {
); );
$this->assertEquals('"abc"', $propFind->get(self::GETETAG_PROPERTYNAME)); $this->assertEquals('"abc"', $propFind->get(self::GETETAG_PROPERTYNAME));
$this->assertEquals(123, $propFind->get(self::FILEID_PROPERTYNAME)); $this->assertEquals('00000123instanceid', $propFind->get(self::FILEID_PROPERTYNAME));
$this->assertEquals(1025, $propFind->get(self::SIZE_PROPERTYNAME)); $this->assertEquals(1025, $propFind->get(self::SIZE_PROPERTYNAME));
$this->assertEquals('DWCKMSR', $propFind->get(self::PERMISSIONS_PROPERTYNAME)); $this->assertEquals('DWCKMSR', $propFind->get(self::PERMISSIONS_PROPERTYNAME));
$this->assertEquals(null, $propFind->get(self::DOWNLOADURL_PROPERTYNAME)); $this->assertEquals(null, $propFind->get(self::DOWNLOADURL_PROPERTYNAME));
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment