From caa27824a94e3af757ea33b01b5682ef963ae714 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20M=C3=BCller?= <thomas.mueller@tmit.eu>
Date: Tue, 8 Oct 2013 15:04:31 +0200
Subject: [PATCH] catch specific file exceptions and convert them to proper
 http status code via webdav

---
 lib/private/connector/sabre/file.php | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/lib/private/connector/sabre/file.php b/lib/private/connector/sabre/file.php
index 3c19da7c61..84154ee855 100644
--- a/lib/private/connector/sabre/file.php
+++ b/lib/private/connector/sabre/file.php
@@ -87,14 +87,21 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
 				throw new Sabre_DAV_Exception();
 			}
 		} catch (\OCP\Files\NotPermittedException $e) {
-			throw new Sabre_DAV_Exception_Forbidden();
+			// a more general case - due to whatever reason the content could not be written
+			throw new Sabre_DAV_Exception_Forbidden($e->getMessage());
+
 		} catch (\OCP\Files\EntityTooLargeException $e) {
-			throw new OC_Connector_Sabre_Exception_EntityTooLarge();
+			// the file is too big to be stored
+			throw new OC_Connector_Sabre_Exception_EntityTooLarge($e->getMessage());
+
 		} catch (\OCP\Files\InvalidContentException $e) {
-			throw new OC_Connector_Sabre_Exception_UnsupportedMediaType();
+			// the file content is not permitted
+			throw new OC_Connector_Sabre_Exception_UnsupportedMediaType($e->getMessage());
+
 		} catch (\OCP\Files\InvalidPathException $e) {
-			// TODO: add specific exception here
-			throw new Sabre_DAV_Exception_Forbidden();
+			// the path for the file was not valid
+			// TODO: find proper http status code for this case
+			throw new Sabre_DAV_Exception_Forbidden($e->getMessage());
 		}
 
 		// rename to correct path
-- 
GitLab