summaryrefslogtreecommitdiffstats
path: root/apps/dav/lib/connector/sabre/exception
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@owncloud.com>2015-11-13 14:13:16 +0100
committerJoas Schilling <nickvergessen@owncloud.com>2015-11-17 10:39:52 +0100
commite2cfcd992cf6f4bb5f1cdb9070d3d0ea2a1504e2 (patch)
tree5808454fe5247f027d6244697b794a7307e5be4b /apps/dav/lib/connector/sabre/exception
parent705d208a8aba55cdb509380db19a0b4e2413d1eb (diff)
downloadnextcloud-server-e2cfcd992cf6f4bb5f1cdb9070d3d0ea2a1504e2.tar.gz
nextcloud-server-e2cfcd992cf6f4bb5f1cdb9070d3d0ea2a1504e2.zip
Allow storage wrappers to through a forbidden exception with retry information
Diffstat (limited to 'apps/dav/lib/connector/sabre/exception')
-rw-r--r--apps/dav/lib/connector/sabre/exception/forbidden.php64
1 files changed, 64 insertions, 0 deletions
diff --git a/apps/dav/lib/connector/sabre/exception/forbidden.php b/apps/dav/lib/connector/sabre/exception/forbidden.php
new file mode 100644
index 00000000000..673958349f3
--- /dev/null
+++ b/apps/dav/lib/connector/sabre/exception/forbidden.php
@@ -0,0 +1,64 @@
+<?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 OCA\DAV\Connector\Sabre\Exception;
+
+class Forbidden extends \Sabre\DAV\Exception\Forbidden {
+
+ const NS_OWNCLOUD = 'http://owncloud.org/ns';
+
+ /**
+ * @var bool
+ */
+ private $retry;
+
+ /**
+ * @param string $message
+ * @param bool $retry
+ * @param \Exception $previous
+ */
+ public function __construct($message, $retry = false, \Exception $previous = null) {
+ parent::__construct($message, 0, $previous);
+ $this->retry = $retry;
+ }
+
+ /**
+ * This method allows the exception to include additional information
+ * into the WebDAV error response
+ *
+ * @param \Sabre\DAV\Server $server
+ * @param \DOMElement $errorNode
+ * @return void
+ */
+ public function serialize(\Sabre\DAV\Server $server,\DOMElement $errorNode) {
+
+ // set ownCloud namespace
+ $errorNode->setAttribute('xmlns:o', self::NS_OWNCLOUD);
+
+ // adding the retry node
+ $error = $errorNode->ownerDocument->createElementNS('o:','o:retry', var_export($this->retry, true));
+ $errorNode->appendChild($error);
+
+ // adding the message node
+ $error = $errorNode->ownerDocument->createElementNS('o:','o:reason', $this->getMessage());
+ $errorNode->appendChild($error);
+ }
+}