From 730c80ff9c83ff1b027ab804ecad599fbcaf7bd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= <thomas.mueller@tmit.eu> Date: Mon, 7 Oct 2013 15:11:47 +0200 Subject: [PATCH] adding additional exceptions for special cases where creating a file might not be allowed --- .../sabre/exception/entitytoolarge.php | 23 +++++++++++++++++++ .../sabre/exception/unsupportedmediatype.php | 22 ++++++++++++++++++ lib/private/connector/sabre/file.php | 7 ++++++ lib/public/files/entitytoolargeexception.php | 11 +++++++++ lib/public/files/invalidcontentexception.php | 11 +++++++++ lib/public/files/invalidpathexception.php | 11 +++++++++ 6 files changed, 85 insertions(+) create mode 100644 lib/private/connector/sabre/exception/entitytoolarge.php create mode 100644 lib/private/connector/sabre/exception/unsupportedmediatype.php create mode 100644 lib/public/files/entitytoolargeexception.php create mode 100644 lib/public/files/invalidcontentexception.php create mode 100644 lib/public/files/invalidpathexception.php diff --git a/lib/private/connector/sabre/exception/entitytoolarge.php b/lib/private/connector/sabre/exception/entitytoolarge.php new file mode 100644 index 0000000000..aa9b37a049 --- /dev/null +++ b/lib/private/connector/sabre/exception/entitytoolarge.php @@ -0,0 +1,23 @@ +<?php + +/** + * EntityTooLarge + * + * This exception is thrown whenever a user tries to upload a file which exceeds hard limitations + * + */ +class OC_Connector_Sabre_Exception_EntityTooLarge extends Sabre_DAV_Exception { + + /** + * Returns the HTTP statuscode for this exception + * + * @return int + */ + public function getHTTPCode() { + +// return 413; + + return 450; + } + +} diff --git a/lib/private/connector/sabre/exception/unsupportedmediatype.php b/lib/private/connector/sabre/exception/unsupportedmediatype.php new file mode 100644 index 0000000000..a8b561280c --- /dev/null +++ b/lib/private/connector/sabre/exception/unsupportedmediatype.php @@ -0,0 +1,22 @@ +<?php + +/** + * Unsupported Media Type + * + * This exception is thrown whenever a user tries to upload a file which holds content which is not allowed + * + */ +class OC_Connector_Sabre_Exception_UnsupportedMediaType extends Sabre_DAV_Exception { + + /** + * Returns the HTTP status code for this exception + * + * @return int + */ + public function getHTTPCode() { + + return 415; + + } + +} diff --git a/lib/private/connector/sabre/file.php b/lib/private/connector/sabre/file.php index 8ffec371e3..3c19da7c61 100644 --- a/lib/private/connector/sabre/file.php +++ b/lib/private/connector/sabre/file.php @@ -88,6 +88,13 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D } } catch (\OCP\Files\NotPermittedException $e) { throw new Sabre_DAV_Exception_Forbidden(); + } catch (\OCP\Files\EntityTooLargeException $e) { + throw new OC_Connector_Sabre_Exception_EntityTooLarge(); + } catch (\OCP\Files\InvalidContentException $e) { + throw new OC_Connector_Sabre_Exception_UnsupportedMediaType(); + } catch (\OCP\Files\InvalidPathException $e) { + // TODO: add specific exception here + throw new Sabre_DAV_Exception_Forbidden(); } // rename to correct path diff --git a/lib/public/files/entitytoolargeexception.php b/lib/public/files/entitytoolargeexception.php new file mode 100644 index 0000000000..3dff41bca0 --- /dev/null +++ b/lib/public/files/entitytoolargeexception.php @@ -0,0 +1,11 @@ +<?php +/** + * Copyright (c) 2013 Thomas Müller <thomas.mueller@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\Files; + +class EntityTooLargeException extends \Exception {} diff --git a/lib/public/files/invalidcontentexception.php b/lib/public/files/invalidcontentexception.php new file mode 100644 index 0000000000..184ec4d06d --- /dev/null +++ b/lib/public/files/invalidcontentexception.php @@ -0,0 +1,11 @@ +<?php +/** + * Copyright (c) 2013 Thomas Müller <thomas.mueller@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\Files; + +class InvalidContentException extends \Exception {} diff --git a/lib/public/files/invalidpathexception.php b/lib/public/files/invalidpathexception.php new file mode 100644 index 0000000000..36090ae5b4 --- /dev/null +++ b/lib/public/files/invalidpathexception.php @@ -0,0 +1,11 @@ +<?php +/** + * Copyright (c) 2013 Thomas Müller <thomas.mueller@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\Files; + +class InvalidPathException extends \Exception {} -- GitLab