From 7cd13f462a41ebde9e151bb7e753a842262ad416 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Macias?= Date: Wed, 25 Nov 2015 17:52:58 +0100 Subject: [PATCH] Add new external storage exceptions for different errors --- .../controller/storagescontroller.php | 62 +++++++------------ lib/public/files/extstorageauthexception.php | 44 +++++++++++++ .../files/extstoragebadconfigexception.php | 45 ++++++++++++++ .../files/extstorageconnectionexception.php | 44 +++++++++++++ .../files/extstoragetimeoutexception.php | 44 +++++++++++++ 5 files changed, 201 insertions(+), 38 deletions(-) create mode 100644 lib/public/files/extstorageauthexception.php create mode 100644 lib/public/files/extstoragebadconfigexception.php create mode 100644 lib/public/files/extstorageconnectionexception.php create mode 100644 lib/public/files/extstoragetimeoutexception.php diff --git a/apps/files_external/controller/storagescontroller.php b/apps/files_external/controller/storagescontroller.php index 7efe761140..ddd7fe6df1 100644 --- a/apps/files_external/controller/storagescontroller.php +++ b/apps/files_external/controller/storagescontroller.php @@ -242,44 +242,30 @@ abstract class StoragesController extends Controller { $this->l10n->t('Insufficient data: %s', [$e->getMessage()]) ); } catch (StorageNotAvailableException $e) { - 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()]) - ); - } + $storage->setStatus( + \OC_Mount_Config::STATUS_ERROR, + $this->l10n->t('%s', [$e->getMessage()]) + ); + } catch (ExtStorageBadConfigException $e) { + $storage->setStatus( + $e->getCode(), + $this->l10n->t('%s', [$e->getMessage()]) + ); + } catch (ExtStorageAuthException $e) { + $storage->setStatus( + $e->getCode(), + $this->l10n->t('%s', [$e->getMessage()]) + ); + } catch (ExtStorageTimeoutException $e) { + $storage->setStatus( + $e->getCode(), + $this->l10n->t('%s', [$e->getMessage()]) + ); + } catch (ExtStorageConnectionException $e) { + $storage->setStatus( + $e->getCode(), + $this->l10n->t('%s', [$e->getMessage()]) + ); } catch (\Exception $e) { // FIXME: convert storage exceptions to StorageNotAvailableException $storage->setStatus( diff --git a/lib/public/files/extstorageauthexception.php b/lib/public/files/extstorageauthexception.php new file mode 100644 index 0000000000..4f070b6c0e --- /dev/null +++ b/lib/public/files/extstorageauthexception.php @@ -0,0 +1,44 @@ + + * + * @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 + * + */ + +// use OCP namespace for all classes that are considered public. +// This means that they should be used by apps instead of the internal ownCloud classes +namespace OCP\Files; + +/** + * External Storage authentication exception + * @since 9.0.0 + */ +class ExtStorageAuthException extends StorageNotAvailableException { + + /** + * ExtStorageAuthException constructor. + * + * @param string $message + * @param int $code + * @param \Exception $previous + * @since 9.0.0 + */ + public function __construct($message = '', $code, \Exception $previous = null) { + $l = \OC::$server->getL10N('core'); + parent::__construct($message, $l->t('External storage unauthorized'), 3, $previous); + } +} diff --git a/lib/public/files/extstoragebadconfigexception.php b/lib/public/files/extstoragebadconfigexception.php new file mode 100644 index 0000000000..869c2d1d13 --- /dev/null +++ b/lib/public/files/extstoragebadconfigexception.php @@ -0,0 +1,45 @@ + + * + * @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 + * + */ + +// use OCP namespace for all classes that are considered public. +// This means that they should be used by apps instead of the internal ownCloud classes +namespace OCP\Files; + +/** + * External Storage has bad or missing config params + * @since 9.0.0 + */ +class ExtStorageBadConfigException extends StorageNotAvailableException { + + /** + * ExtStorageBadConfigException constructor. + * + * @param string $message + * @param int $code + * @param \Exception $previous + * @since 9.0.0 + */ + public function __construct($message = '', $code, \Exception $previous = null) { + $l = \OC::$server->getL10N('core'); + parent::__construct($message, $l->t('External storage incomplete configuration'), 2, $previous); + } + +} diff --git a/lib/public/files/extstorageconnectionexception.php b/lib/public/files/extstorageconnectionexception.php new file mode 100644 index 0000000000..472d5cd6c5 --- /dev/null +++ b/lib/public/files/extstorageconnectionexception.php @@ -0,0 +1,44 @@ + + * + * @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 + * + */ + +// use OCP namespace for all classes that are considered public. +// This means that they should be used by apps instead of the internal ownCloud classes +namespace OCP\Files; + +/** + * External Storage authentication exception + * @since 9.0.0 + */ +class ExtStorageConnectionException extends StorageNotAvailableException { + + /** + * ExtStorageConnectionException constructor. + * + * @param string $message + * @param int $code + * @param \Exception $previous + * @since 9.0.0 + */ + public function __construct($message = '', $code, \Exception $previous = null) { + $l = \OC::$server->getL10N('core'); + parent::__construct($message, $l->t('External storage connection error'), 5, $previous); + } +} diff --git a/lib/public/files/extstoragetimeoutexception.php b/lib/public/files/extstoragetimeoutexception.php new file mode 100644 index 0000000000..99932776a8 --- /dev/null +++ b/lib/public/files/extstoragetimeoutexception.php @@ -0,0 +1,44 @@ + + * + * @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 + * + */ + +// use OCP namespace for all classes that are considered public. +// This means that they should be used by apps instead of the internal ownCloud classes +namespace OCP\Files; + +/** + * External Storage authentication exception + * @since 9.0.0 + */ +class ExtStorageTimeoutException extends StorageNotAvailableException { + + /** + * ExtStorageTimeoutException constructor. + * + * @param string $message + * @param int $code + * @param \Exception $previous + * @since 9.0.0 + */ + public function __construct($message = '', $code, \Exception $previous = null) { + $l = \OC::$server->getL10N('core'); + parent::__construct($message, $l->t('External storage connection timeout'), 4, $previous); + } +}