diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-12-03 12:30:38 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-12-03 12:30:38 +0100 |
commit | e62b6c1617886b2cdd7553ea9b119c431e4eb363 (patch) | |
tree | e592df08501a2274e863114d3356dd7465b7df25 | |
parent | 3a391e4cc9ead18c1e1381966edad4683a92214b (diff) | |
parent | 9dd11091d4f9a970a3e76d77e772b5905666ed30 (diff) | |
download | nextcloud-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.php | 8 | ||||
-rw-r--r-- | apps/files_external/lib/config.php | 12 | ||||
-rw-r--r-- | apps/files_external/service/storagesservice.php | 3 | ||||
-rw-r--r-- | lib/public/files/storageauthexception.php | 41 | ||||
-rw-r--r-- | lib/public/files/storagebadconfigexception.php | 42 | ||||
-rw-r--r-- | lib/public/files/storageconnectionexception.php | 41 | ||||
-rw-r--r-- | lib/public/files/storagenotavailableexception.php | 8 | ||||
-rw-r--r-- | lib/public/files/storagetimeoutexception.php | 41 |
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); + } +} |