Add new external storage exceptions for different errors

This commit is contained in:
Jesús Macias 2015-11-25 17:52:58 +01:00 committed by Morris Jobke
parent b17f26834d
commit 7cd13f462a
5 changed files with 201 additions and 38 deletions

View File

@ -242,44 +242,30 @@ abstract class StoragesController extends Controller {
$this->l10n->t('Insufficient data: %s', [$e->getMessage()]) $this->l10n->t('Insufficient data: %s', [$e->getMessage()])
); );
} catch (StorageNotAvailableException $e) { } catch (StorageNotAvailableException $e) {
switch ($e->getCode()) { $storage->setStatus(
case 1: \OC_Mount_Config::STATUS_ERROR,
$storage->setStatus( $this->l10n->t('%s', [$e->getMessage()])
\OC_Mount_Config::STATUS_ERROR, );
$this->l10n->t('%s', [$e->getMessage()]) } catch (ExtStorageBadConfigException $e) {
); $storage->setStatus(
break; $e->getCode(),
case 3: $this->l10n->t('%s', [$e->getMessage()])
$storage->setStatus( );
\OC_Mount_Config::STATUS_INCOMPLETE_CONF, } catch (ExtStorageAuthException $e) {
$this->l10n->t('Incomplete configuration. %s', [$e->getMessage()]) $storage->setStatus(
); $e->getCode(),
break; $this->l10n->t('%s', [$e->getMessage()])
case 4: );
$storage->setStatus( } catch (ExtStorageTimeoutException $e) {
\OC_Mount_Config::STATUS_UNAUTHORIZED, $storage->setStatus(
$this->l10n->t('Unauthorized. %s', [$e->getMessage()]) $e->getCode(),
$e->getMessage() $this->l10n->t('%s', [$e->getMessage()])
); );
break; } catch (ExtStorageConnectionException $e) {
case 5: $storage->setStatus(
$storage->setStatus( $e->getCode(),
\OC_Mount_Config::STATUS_TIMEOUT, $this->l10n->t('%s', [$e->getMessage()])
$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) { } catch (\Exception $e) {
// FIXME: convert storage exceptions to StorageNotAvailableException // FIXME: convert storage exceptions to StorageNotAvailableException
$storage->setStatus( $storage->setStatus(

View File

@ -0,0 +1,44 @@
<?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/>
*
*/
// 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);
}
}

View File

@ -0,0 +1,45 @@
<?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/>
*
*/
// 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);
}
}

View File

@ -0,0 +1,44 @@
<?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/>
*
*/
// 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);
}
}

View File

@ -0,0 +1,44 @@
<?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/>
*
*/
// 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);
}
}