diff --git a/apps/files_external/controller/storagescontroller.php b/apps/files_external/controller/storagescontroller.php
index c66bd902d8..7712f9769c 100644
--- a/apps/files_external/controller/storagescontroller.php
+++ b/apps/files_external/controller/storagescontroller.php
@@ -238,18 +238,18 @@ abstract class StoragesController extends Controller {
);
} catch (InsufficientDataForMeaningfulAnswerException $e) {
$storage->setStatus(
- \OC_Mount_Config::STATUS_INDETERMINATE,
+ StorageNotAvailableException::STATUS_INDETERMINATE,
$this->l10n->t('Insufficient data: %s', [$e->getMessage()])
);
} catch (StorageNotAvailableException $e) {
$storage->setStatus(
- \OC_Mount_Config::STATUS_ERROR,
- $e->getMessage()
+ $e->getCode(),
+ $this->l10n->t('%s', [$e->getMessage()])
);
} catch (\Exception $e) {
// FIXME: convert storage exceptions to StorageNotAvailableException
$storage->setStatus(
- \OC_Mount_Config::STATUS_ERROR,
+ StorageNotAvailableException::STATUS_ERROR,
get_class($e).': '.$e->getMessage()
);
}
diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php
index 1e96fac814..7a869847a6 100644
--- a/apps/files_external/lib/config.php
+++ b/apps/files_external/lib/config.php
@@ -36,6 +36,7 @@ use \OCA\Files_External\Appinfo\Application;
use \OCA\Files_External\Lib\Backend\LegacyBackend;
use \OCA\Files_External\Lib\StorageConfig;
use \OCA\Files_External\Lib\Backend\Backend;
+use \OCP\Files\StorageNotAvailableException;
/**
* Class to configure mount.json globally and for users
@@ -48,11 +49,6 @@ class OC_Mount_Config {
const MOUNT_TYPE_USER = 'user';
const MOUNT_TYPE_PERSONAL = 'personal';
- // getBackendStatus return types
- const STATUS_SUCCESS = 0;
- const STATUS_ERROR = 1;
- const STATUS_INDETERMINATE = 2;
-
// whether to skip backend test (for unit tests, as this static class is not mockable)
public static $skipTest = false;
@@ -219,7 +215,7 @@ class OC_Mount_Config {
*/
public static function getBackendStatus($class, $options, $isPersonal) {
if (self::$skipTest) {
- return self::STATUS_SUCCESS;
+ return StorageNotAvailableException::STATUS_SUCCESS;
}
foreach ($options as &$option) {
$option = self::setUserVars(OCP\User::getUser(), $option);
@@ -233,7 +229,7 @@ class OC_Mount_Config {
$result = $storage->test($isPersonal);
$storage->setAvailability($result);
if ($result) {
- return self::STATUS_SUCCESS;
+ return StorageNotAvailableException::STATUS_SUCCESS;
}
} catch (\Exception $e) {
$storage->setAvailability(false);
@@ -244,7 +240,7 @@ class OC_Mount_Config {
throw $exception;
}
}
- return self::STATUS_ERROR;
+ return StorageNotAvailableException::STATUS_ERROR;
}
/**
diff --git a/apps/files_external/service/storagesservice.php b/apps/files_external/service/storagesservice.php
index 3446ed0dab..c847930ba2 100644
--- a/apps/files_external/service/storagesservice.php
+++ b/apps/files_external/service/storagesservice.php
@@ -31,6 +31,7 @@ use \OCA\Files_external\NotFoundException;
use \OCA\Files_External\Service\BackendService;
use \OCA\Files_External\Lib\Backend\Backend;
use \OCA\Files_External\Lib\Auth\AuthMechanism;
+use \OCP\Files\StorageNotAvailableException;
/**
* Service class to manage external storages
@@ -411,7 +412,7 @@ abstract class StoragesService {
$this->triggerHooks($newStorage, Filesystem::signal_create_mount);
- $newStorage->setStatus(\OC_Mount_Config::STATUS_SUCCESS);
+ $newStorage->setStatus(StorageNotAvailableException::STATUS_SUCCESS);
return $newStorage;
}
diff --git a/lib/public/files/storageauthexception.php b/lib/public/files/storageauthexception.php
new file mode 100644
index 0000000000..6b49065038
--- /dev/null
+++ b/lib/public/files/storageauthexception.php
@@ -0,0 +1,41 @@
+
+ *
+ * @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
+ *
+ */
+namespace OCP\Files;
+
+/**
+ * Storage authentication exception
+ * @since 9.0.0
+ */
+class StorageAuthException extends StorageNotAvailableException {
+
+ /**
+ * StorageAuthException constructor.
+ *
+ * @param string $message
+ * @param int $code
+ * @param \Exception $previous
+ * @since 9.0.0
+ */
+ public function __construct($message = '', \Exception $previous = null) {
+ $l = \OC::$server->getL10N('core');
+ parent::__construct($l->t('Storage unauthorized. %s', $message), self::STATUS_UNAUTHORIZED, $previous);
+ }
+}
diff --git a/lib/public/files/storagebadconfigexception.php b/lib/public/files/storagebadconfigexception.php
new file mode 100644
index 0000000000..d72ad3358e
--- /dev/null
+++ b/lib/public/files/storagebadconfigexception.php
@@ -0,0 +1,42 @@
+
+ *
+ * @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
+ *
+ */
+namespace OCP\Files;
+
+/**
+ * Storage has bad or missing config params
+ * @since 9.0.0
+ */
+class StorageBadConfigException extends StorageNotAvailableException {
+
+ /**
+ * ExtStorageBadConfigException constructor.
+ *
+ * @param string $message
+ * @param int $code
+ * @param \Exception $previous
+ * @since 9.0.0
+ */
+ public function __construct($message = '', \Exception $previous = null) {
+ $l = \OC::$server->getL10N('core');
+ parent::__construct($l->t('Storage incomplete configuration. %s', $message), self::STATUS_INCOMPLETE_CONF, $previous);
+ }
+
+}
diff --git a/lib/public/files/storageconnectionexception.php b/lib/public/files/storageconnectionexception.php
new file mode 100644
index 0000000000..c17367046e
--- /dev/null
+++ b/lib/public/files/storageconnectionexception.php
@@ -0,0 +1,41 @@
+
+ *
+ * @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
+ *
+ */
+namespace OCP\Files;
+
+/**
+ * Storage authentication exception
+ * @since 9.0.0
+ */
+class StorageConnectionException extends StorageNotAvailableException {
+
+ /**
+ * StorageConnectionException constructor.
+ *
+ * @param string $message
+ * @param int $code
+ * @param \Exception $previous
+ * @since 9.0.0
+ */
+ public function __construct($message = '', \Exception $previous = null) {
+ $l = \OC::$server->getL10N('core');
+ parent::__construct($l->t('Storage connection error. %s', $message), self::STATUS_NETWORK_ERROR, $previous);
+ }
+}
diff --git a/lib/public/files/storagenotavailableexception.php b/lib/public/files/storagenotavailableexception.php
index a6665b38ce..323f5d9b7f 100644
--- a/lib/public/files/storagenotavailableexception.php
+++ b/lib/public/files/storagenotavailableexception.php
@@ -37,6 +37,14 @@ use OC\HintException;
*/
class StorageNotAvailableException extends HintException {
+ 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;
+
/**
* StorageNotAvailableException constructor.
*
diff --git a/lib/public/files/storagetimeoutexception.php b/lib/public/files/storagetimeoutexception.php
new file mode 100644
index 0000000000..c6682604b6
--- /dev/null
+++ b/lib/public/files/storagetimeoutexception.php
@@ -0,0 +1,41 @@
+
+ *
+ * @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
+ *
+ */
+namespace OCP\Files;
+
+/**
+ * Storage authentication exception
+ * @since 9.0.0
+ */
+class StorageTimeoutException extends StorageNotAvailableException {
+
+ /**
+ * StorageTimeoutException constructor.
+ *
+ * @param string $message
+ * @param int $code
+ * @param \Exception $previous
+ * @since 9.0.0
+ */
+ public function __construct($message = '', \Exception $previous = null) {
+ $l = \OC::$server->getL10N('core');
+ parent::__construct($l->t('Storage connection timeout. %s', $message), self::STATUS_TIMEOUT, $previous);
+ }
+}