summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-12-03 12:30:38 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2015-12-03 12:30:38 +0100
commite62b6c1617886b2cdd7553ea9b119c431e4eb363 (patch)
treee592df08501a2274e863114d3356dd7465b7df25
parent3a391e4cc9ead18c1e1381966edad4683a92214b (diff)
parent9dd11091d4f9a970a3e76d77e772b5905666ed30 (diff)
downloadnextcloud-server-e62b6c1617886b2cdd7553ea9b119c431e4eb363.tar.gz
nextcloud-server-e62b6c1617886b2cdd7553ea9b119c431e4eb363.zip
Merge pull request #20729 from owncloud/issue_20599
Add different storage status error codes managed by StoragedNotAvailableExc…
-rw-r--r--apps/files_external/controller/storagescontroller.php8
-rw-r--r--apps/files_external/lib/config.php12
-rw-r--r--apps/files_external/service/storagesservice.php3
-rw-r--r--lib/public/files/storageauthexception.php41
-rw-r--r--lib/public/files/storagebadconfigexception.php42
-rw-r--r--lib/public/files/storageconnectionexception.php41
-rw-r--r--lib/public/files/storagenotavailableexception.php8
-rw-r--r--lib/public/files/storagetimeoutexception.php41
8 files changed, 183 insertions, 13 deletions
diff --git a/apps/files_external/controller/storagescontroller.php b/apps/files_external/controller/storagescontroller.php
index c66bd902d8d..7712f9769c9 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 1e96fac8145..7a869847a63 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 3446ed0dab3..c847930ba2d 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 00000000000..6b49065038b
--- /dev/null
+++ b/lib/public/files/storageauthexception.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * @author Jesus Macias <jesus@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 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 00000000000..d72ad3358e5
--- /dev/null
+++ b/lib/public/files/storagebadconfigexception.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * @author Jesus Macias <jesus@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 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 00000000000..c17367046e0
--- /dev/null
+++ b/lib/public/files/storageconnectionexception.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * @author Jesus Macias <jesus@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 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 a6665b38ce1..323f5d9b7f8 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 00000000000..c6682604b6d
--- /dev/null
+++ b/lib/public/files/storagetimeoutexception.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * @author Jesus Macias <jesus@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 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);
+ }
+}