Cache API errors at the dispatcher level, so a more appropriate error page can be displayed
This commit is contained in:
parent
29d8207c63
commit
68bee55f6a
@ -18,6 +18,7 @@ namespace Aviat\AnimeClient;
|
||||
|
||||
use Aviat\Ion\Di\ContainerInterface;
|
||||
use Aviat\Ion\Friend;
|
||||
use GuzzleHttp\Exception\ServerException;
|
||||
|
||||
/**
|
||||
* Basic routing/ dispatch
|
||||
@ -128,9 +129,23 @@ class Dispatcher extends RoutingBase {
|
||||
$actionMethod = $error_route['action_method'];
|
||||
$params = $error_route['params'];
|
||||
}
|
||||
|
||||
// Actually instantiate the controller
|
||||
$this->call($controllerName, $actionMethod, $params);
|
||||
|
||||
// Try to catch API errors in a presentable fashion
|
||||
try
|
||||
{
|
||||
// Actually instantiate the controller
|
||||
$this->call($controllerName, $actionMethod, $params);
|
||||
}
|
||||
catch (ServerException $e)
|
||||
{
|
||||
$response = $e->getResponse();
|
||||
$this->call(AnimeClient::DEFAULT_CONTROLLER, AnimeClient::ERROR_MESSAGE_METHOD, [
|
||||
$response->getStatusCode(),
|
||||
'API Error',
|
||||
'There was a problem getting data from an external source.',
|
||||
(string) $response->getBody()
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user