@@ -39,7 +39,8 @@ $serverFactory = new \OC\Connector\Sabre\ServerFactory( | |||
\OC::$server->getDatabaseConnection(), | |||
\OC::$server->getUserSession(), | |||
\OC::$server->getMountManager(), | |||
\OC::$server->getTagManager() | |||
\OC::$server->getTagManager(), | |||
\OC::$server->getEventDispatcher() | |||
); | |||
// Backends |
@@ -39,7 +39,8 @@ $serverFactory = new \OC\Connector\Sabre\ServerFactory( | |||
\OC::$server->getDatabaseConnection(), | |||
\OC::$server->getUserSession(), | |||
\OC::$server->getMountManager(), | |||
\OC::$server->getTagManager() | |||
\OC::$server->getTagManager(), | |||
\OC::$server->getEventDispatcher() | |||
); | |||
$requestUri = \OC::$server->getRequest()->getRequestUri(); |
@@ -0,0 +1,59 @@ | |||
<?php | |||
/** | |||
* @author Joas Schilling <nickvergessen@owncloud.com> | |||
* | |||
* @copyright Copyright (c) 2015, ownCloud, Inc. | |||
* @license AGPL-3.0 | |||
* | |||
* This code is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License, version 3, | |||
* as published by the Free Software Foundation. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU Affero General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Affero General Public License, version 3, | |||
* along with this program. If not, see <http://www.gnu.org/licenses/> | |||
* | |||
*/ | |||
namespace OC\Connector\Sabre; | |||
use Sabre\DAV\Server; | |||
use Sabre\DAV\ServerPlugin; | |||
use Symfony\Component\EventDispatcher\EventDispatcherInterface; | |||
class ListenerPlugin extends ServerPlugin { | |||
/** @var EventDispatcherInterface */ | |||
protected $dispatcher; | |||
/** | |||
* @param EventDispatcherInterface $dispatcher | |||
*/ | |||
public function __construct(EventDispatcherInterface $dispatcher) { | |||
$this->dispatcher = $dispatcher; | |||
} | |||
/** | |||
* This initialize the plugin | |||
* | |||
* @param Server $server | |||
*/ | |||
public function initialize(Server $server) { | |||
$server->on('beforeMethod', array($this, 'emitListener'), 15); | |||
} | |||
/** | |||
* This method is called before any HTTP method and returns http status code 503 | |||
* in case the system is in maintenance mode. | |||
* | |||
* @return bool | |||
*/ | |||
public function emitListener() { | |||
$this->dispatcher->dispatch('OC\Connector\Sabre::beforeMethod'); | |||
return true; | |||
} | |||
} |
@@ -28,6 +28,7 @@ use OCP\ILogger; | |||
use OCP\ITagManager; | |||
use OCP\IUserSession; | |||
use Sabre\DAV\Auth\Backend\BackendInterface; | |||
use Symfony\Component\EventDispatcher\EventDispatcherInterface; | |||
class ServerFactory { | |||
public function __construct( | |||
@@ -36,7 +37,8 @@ class ServerFactory { | |||
IDBConnection $databaseConnection, | |||
IUserSession $userSession, | |||
IMountManager $mountManager, | |||
ITagManager $tagManager | |||
ITagManager $tagManager, | |||
EventDispatcherInterface $dispatcher | |||
) { | |||
$this->config = $config; | |||
$this->logger = $logger; | |||
@@ -44,6 +46,7 @@ class ServerFactory { | |||
$this->userSession = $userSession; | |||
$this->mountManager = $mountManager; | |||
$this->tagManager = $tagManager; | |||
$this->dispatcher = $dispatcher; | |||
} | |||
/** | |||
@@ -71,6 +74,7 @@ class ServerFactory { | |||
$server->addPlugin(new \OC\Connector\Sabre\FilesPlugin($objectTree)); | |||
$server->addPlugin(new \OC\Connector\Sabre\ExceptionLoggerPlugin('webdav', $this->logger)); | |||
$server->addPlugin(new \OC\Connector\Sabre\LockPlugin($objectTree)); | |||
$server->addPlugin(new \OC\Connector\Sabre\ListenerPlugin($this->dispatcher)); | |||
// wait with registering these until auth is handled and the filesystem is setup | |||
$server->on('beforeMethod', function () use ($server, $objectTree, $viewCallBack) { |
@@ -45,7 +45,8 @@ abstract class RequestTest extends TestCase { | |||
\OC::$server->getDatabaseConnection(), | |||
\OC::$server->getUserSession(), | |||
\OC::$server->getMountManager(), | |||
\OC::$server->getTagManager() | |||
\OC::$server->getTagManager(), | |||
\OC::$server->getEventDispatcher() | |||
); | |||
} | |||