From b17f26834df37819656b83936c34d8957c344fac Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jes=C3=BAs=20Macias?= <jmacias@solidgear.es>
Date: Wed, 25 Nov 2015 11:58:54 +0100
Subject: [PATCH] Add different storage status codes managed by
 StoragedNotAvailableException

---
 .../controller/storagescontroller.php         | 42 +++++++++++++++++--
 apps/files_external/lib/config.php            |  4 ++
 2 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/apps/files_external/controller/storagescontroller.php b/apps/files_external/controller/storagescontroller.php
index c66bd902d8d..7efe7611407 100644
--- a/apps/files_external/controller/storagescontroller.php
+++ b/apps/files_external/controller/storagescontroller.php
@@ -242,10 +242,44 @@ abstract class StoragesController extends Controller {
 				$this->l10n->t('Insufficient data: %s', [$e->getMessage()])
 			);
 		} catch (StorageNotAvailableException $e) {
-			$storage->setStatus(
-				\OC_Mount_Config::STATUS_ERROR,
-				$e->getMessage()
-			);
+			switch ($e->getCode()) {
+				case 1:
+					$storage->setStatus(
+						\OC_Mount_Config::STATUS_ERROR,
+						$this->l10n->t('%s', [$e->getMessage()])
+					);
+					break;
+				case 3:
+					$storage->setStatus(
+						\OC_Mount_Config::STATUS_INCOMPLETE_CONF,
+						$this->l10n->t('Incomplete configuration. %s', [$e->getMessage()])
+					);
+					break;
+				case 4:
+					$storage->setStatus(
+						\OC_Mount_Config::STATUS_UNAUTHORIZED,
+						$this->l10n->t('Unauthorized. %s', [$e->getMessage()])
+						$e->getMessage()
+					);
+					break;
+				case 5:
+					$storage->setStatus(
+						\OC_Mount_Config::STATUS_TIMEOUT,
+						$this->l10n->t('Timeout. %s', [$e->getMessage()])
+					);
+					break;
+				case 6:
+					$storage->setStatus(
+						\OC_Mount_Config::STATUS_NETWORK_ERROR,
+						$this->l10n->t('Network error. %s', [$e->getMessage()])
+					);
+					break;
+				default:
+					$storage->setStatus(
+						\OC_Mount_Config::STATUS_ERROR,
+						$this->l10n->t('%s', [$e->getMessage()])
+					);
+			}
 		} catch (\Exception $e) {
 			// FIXME: convert storage exceptions to StorageNotAvailableException
 			$storage->setStatus(
diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php
index 1e96fac8145..bf507233035 100644
--- a/apps/files_external/lib/config.php
+++ b/apps/files_external/lib/config.php
@@ -52,6 +52,10 @@ class OC_Mount_Config {
 	const STATUS_SUCCESS = 0;
 	const STATUS_ERROR = 1;
 	const STATUS_INDETERMINATE = 2;
+	const STATUS_INCOMPLETE_CONF = 3;
+	const STATUS_UNAUTHORIZED = 4;
+	const STATUS_TIMEOUT = 5;
+	const STATUS_NETWORK_ERROR = 6;
 
 	// whether to skip backend test (for unit tests, as this static class is not mockable)
 	public static $skipTest = false;
-- 
GitLab