@@ -21,6 +21,9 @@ | |||
namespace OC\Connector\Sabre; | |||
use OCP\AppFramework\Http; | |||
use OCP\SabrePluginEvent; | |||
use OCP\SabrePluginException; | |||
use Sabre\DAV\ServerPlugin; | |||
use Symfony\Component\EventDispatcher\EventDispatcherInterface; | |||
@@ -49,9 +52,16 @@ class ListenerPlugin extends ServerPlugin { | |||
* in case the system is in maintenance mode. | |||
* | |||
* @return bool | |||
* @throws \Exception | |||
*/ | |||
public function emitListener() { | |||
$this->dispatcher->dispatch('OC\Connector\Sabre::beforeMethod'); | |||
$event = new SabrePluginEvent(); | |||
$this->dispatcher->dispatch('OC\Connector\Sabre::beforeMethod', $event); | |||
if ($event->getStatusCode() !== Http::STATUS_OK) { | |||
throw new SabrePluginException($event->getMessage(), $event->getStatusCode()); | |||
} | |||
return true; | |||
} |
@@ -0,0 +1,72 @@ | |||
<?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 OCP; | |||
use OCP\AppFramework\Http; | |||
use Symfony\Component\EventDispatcher\Event; | |||
class SabrePluginEvent extends Event { | |||
/** @var int */ | |||
protected $statusCode; | |||
/** @var string */ | |||
protected $message; | |||
public function __construct() { | |||
$this->message = ''; | |||
$this->statusCode = Http::STATUS_OK; | |||
} | |||
/** | |||
* @param int $statusCode | |||
* @return self | |||
*/ | |||
public function setStatusCode($statusCode) { | |||
$this->statusCode = (int) $statusCode; | |||
return $this; | |||
} | |||
/** | |||
* @param string $message | |||
* @return self | |||
*/ | |||
public function setMessage($message) { | |||
$this->message = (string) $message; | |||
return $this; | |||
} | |||
/** | |||
* @return int | |||
*/ | |||
public function getStatusCode() { | |||
return $this->statusCode; | |||
} | |||
/** | |||
* @return string | |||
*/ | |||
public function getMessage() { | |||
return $this->message; | |||
} | |||
} |
@@ -0,0 +1,37 @@ | |||
<?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 OCP; | |||
use Sabre\DAV\Exception; | |||
class SabrePluginException extends Exception { | |||
/** | |||
* Returns the HTTP statuscode for this exception | |||
* | |||
* @return int | |||
*/ | |||
public function getHTTPCode() { | |||
return $this->code; | |||
} | |||
} |