Merge pull request #17273 from owncloud/s2s-catchmoreexceptiontypes

Catch more error codes thrown by federated shares
This commit is contained in:
Vincent Petry 2015-07-01 12:30:32 +02:00
commit 5caeda33f1
1 changed files with 7 additions and 13 deletions

View File

@ -191,7 +191,7 @@ class Storage extends DAV implements ISharedStorage {
throw new StorageInvalidException(); throw new StorageInvalidException();
} else { } else {
// ownCloud instance is gone, likely to be a temporary server configuration error // ownCloud instance is gone, likely to be a temporary server configuration error
throw $e; throw new StorageNotAvailableException();
} }
} catch (ForbiddenException $e) { } catch (ForbiddenException $e) {
// auth error, remove share for now (provide a dialog in the future) // auth error, remove share for now (provide a dialog in the future)
@ -201,10 +201,7 @@ class Storage extends DAV implements ISharedStorage {
} catch (\GuzzleHttp\Exception\ConnectException $e) { } catch (\GuzzleHttp\Exception\ConnectException $e) {
throw new StorageNotAvailableException(); throw new StorageNotAvailableException();
} catch (\GuzzleHttp\Exception\RequestException $e) { } catch (\GuzzleHttp\Exception\RequestException $e) {
if ($e->getCode() === 503) { throw new StorageNotAvailableException();
throw new StorageNotAvailableException();
}
throw $e;
} catch (\Exception $e) { } catch (\Exception $e) {
throw $e; throw $e;
} }
@ -250,16 +247,13 @@ class Storage extends DAV implements ISharedStorage {
try { try {
$response = $client->post($url, ['body' => ['password' => $password]]); $response = $client->post($url, ['body' => ['password' => $password]]);
} catch (\GuzzleHttp\Exception\RequestException $e) { } catch (\GuzzleHttp\Exception\RequestException $e) {
switch ($e->getCode()) { if ($e->getCode() === 401 || $e->getCode() === 403) {
case 401:
case 403:
throw new ForbiddenException(); throw new ForbiddenException();
case 404:
throw new NotFoundException();
case 500:
throw new \Exception();
} }
throw $e; // throw this to be on the safe side: the share will still be visible
// in the UI in case the failure is intermittent, and the user will
// be able to decide whether to remove it if it's really gone
throw new NotFoundException();
} }
return json_decode($response->getBody(), true); return json_decode($response->getBody(), true);