handle unavailable fed shares while testing for availability (#25277)
* More explicit http status codes * handle unavailable fed shares while testing for availability
This commit is contained in:
parent
f107be3d29
commit
332b38fd92
|
@ -32,6 +32,7 @@ use OC\Files\Storage\DAV;
|
|||
use OC\ForbiddenException;
|
||||
use OCA\FederatedFileSharing\DiscoveryManager;
|
||||
use OCA\Files_Sharing\ISharedStorage;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\Files\NotFoundException;
|
||||
use OCP\Files\StorageInvalidException;
|
||||
use OCP\Files\StorageNotAvailableException;
|
||||
|
@ -181,6 +182,20 @@ class Storage extends DAV implements ISharedStorage {
|
|||
}
|
||||
}
|
||||
|
||||
public function test() {
|
||||
try {
|
||||
parent::test();
|
||||
} catch (StorageInvalidException $e) {
|
||||
// check if it needs to be removed
|
||||
$this->checkStorageAvailability();
|
||||
throw $e;
|
||||
} catch (StorageNotAvailableException $e) {
|
||||
// check if it needs to be removed or just temp unavailable
|
||||
$this->checkStorageAvailability();
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether this storage is permanently or temporarily
|
||||
* unavailable
|
||||
|
@ -310,10 +325,10 @@ class Storage extends DAV implements ISharedStorage {
|
|||
'connect_timeout' => 10,
|
||||
]);
|
||||
} catch (\GuzzleHttp\Exception\RequestException $e) {
|
||||
if ($e->getCode() === 401 || $e->getCode() === 403) {
|
||||
if ($e->getCode() === Http::STATUS_UNAUTHORIZED || $e->getCode() === Http::STATUS_FORBIDDEN) {
|
||||
throw new ForbiddenException();
|
||||
}
|
||||
if ($e->getCode() === 404) {
|
||||
if ($e->getCode() === Http::STATUS_NOT_FOUND) {
|
||||
throw new NotFoundException();
|
||||
}
|
||||
// throw this to be on the safe side: the share will still be visible
|
||||
|
|
|
@ -814,13 +814,13 @@ class DAV extends Common {
|
|||
private function convertException(Exception $e, $path = '') {
|
||||
Util::writeLog('files_external', $e->getMessage(), Util::ERROR);
|
||||
if ($e instanceof ClientHttpException) {
|
||||
if ($e->getHttpStatus() === 423) {
|
||||
if ($e->getHttpStatus() === Http::STATUS_LOCKED) {
|
||||
throw new \OCP\Lock\LockedException($path);
|
||||
}
|
||||
if ($e->getHttpStatus() === 401) {
|
||||
if ($e->getHttpStatus() === Http::STATUS_UNAUTHORIZED) {
|
||||
// either password was changed or was invalid all along
|
||||
throw new StorageInvalidException(get_class($e) . ': ' . $e->getMessage());
|
||||
} else if ($e->getHttpStatus() === 405) {
|
||||
} else if ($e->getHttpStatus() === Http::STATUS_METHOD_NOT_ALLOWED) {
|
||||
// ignore exception for MethodNotAllowed, false will be returned
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue