Browse Source

Load apps dav plugins on the old webdav route

Signed-off-by: Julius Härtl <jus@bitgrid.net>
tags/v18.0.0beta3
Julius Härtl 4 years ago
parent
commit
1593322397
No account linked to committer's email address

+ 2
- 1
apps/dav/appinfo/v1/publicwebdav.php View File

@@ -52,7 +52,8 @@ $serverFactory = new OCA\DAV\Connector\Sabre\ServerFactory(
\OC::$server->getMountManager(),
\OC::$server->getTagManager(),
\OC::$server->getRequest(),
\OC::$server->getPreviewManager()
\OC::$server->getPreviewManager(),
\OC::$server->getEventDispatcher()
);

$requestUri = \OC::$server->getRequest()->getRequestUri();

+ 2
- 1
apps/dav/appinfo/v1/webdav.php View File

@@ -44,7 +44,8 @@ $serverFactory = new \OCA\DAV\Connector\Sabre\ServerFactory(
\OC::$server->getMountManager(),
\OC::$server->getTagManager(),
\OC::$server->getRequest(),
\OC::$server->getPreviewManager()
\OC::$server->getPreviewManager(),
\OC::$server->getEventDispatcher()
);

// Backends

+ 21
- 2
apps/dav/lib/Connector/Sabre/ServerFactory.php View File

@@ -30,6 +30,7 @@
namespace OCA\DAV\Connector\Sabre;

use OC\Files\Node\Folder;
use OCA\DAV\AppInfo\PluginManager;
use OCA\DAV\Files\BrowserErrorPagePlugin;
use OCP\Files\Mount\IMountManager;
use OCP\IConfig;
@@ -39,7 +40,9 @@ use OCP\IPreview;
use OCP\IRequest;
use OCP\ITagManager;
use OCP\IUserSession;
use OCP\SabrePluginEvent;
use Sabre\DAV\Auth\Plugin;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;

class ServerFactory {
/** @var IConfig */
@@ -58,6 +61,8 @@ class ServerFactory {
private $request;
/** @var IPreview */
private $previewManager;
/** @var EventDispatcherInterface */
private $eventDispatcher;

/**
* @param IConfig $config
@@ -77,7 +82,8 @@ class ServerFactory {
IMountManager $mountManager,
ITagManager $tagManager,
IRequest $request,
IPreview $previewManager
IPreview $previewManager,
EventDispatcherInterface $eventDispatcher
) {
$this->config = $config;
$this->logger = $logger;
@@ -87,6 +93,7 @@ class ServerFactory {
$this->tagManager = $tagManager;
$this->request = $request;
$this->previewManager = $previewManager;
$this->eventDispatcher = $eventDispatcher;
}

/**
@@ -134,7 +141,7 @@ class ServerFactory {
$server->on('beforeMethod', function () use ($server, $objectTree, $viewCallBack) {
// ensure the skeleton is copied
$userFolder = \OC::$server->getUserFolder();
/** @var \OC\Files\View $view */
$view = $viewCallBack($server);
if ($userFolder instanceof Folder && $userFolder->getPath() === $view->getRoot()) {
@@ -195,6 +202,18 @@ class ServerFactory {
);
}
$server->addPlugin(new \OCA\DAV\Connector\Sabre\CopyEtagHeaderPlugin());

// Load dav plugins from apps
$event = new SabrePluginEvent($server);
$this->eventDispatcher->dispatch($event);
$pluginManager = new PluginManager(
\OC::$server,
\OC::$server->getAppManager()
);
foreach ($pluginManager->getAppPlugins() as $appPlugin) {
$server->addPlugin($appPlugin);
}

}, 30); // priority 30: after auth (10) and acl(20), before lock(50) and handling the request
return $server;
}

+ 2
- 1
apps/dav/tests/unit/Connector/Sabre/RequestTest/RequestTestCase.php View File

@@ -67,7 +67,8 @@ abstract class RequestTestCase extends TestCase {
$this->getMockBuilder(IRequest::class)
->disableOriginalConstructor()
->getMock(),
\OC::$server->getPreviewManager()
\OC::$server->getPreviewManager(),
\OC::$server->getEventDispatcher()
);
}


Loading…
Cancel
Save