. * */ namespace OCA\Contacts\Middleware; use OCA\AppFramework\Controller\Controller; use OCA\AppFramework\Middleware\Middleware; use OCA\AppFramework\Core\API; use OCA\Contacts\JSONResponse; /** * Used to intercept exceptions thrown in controllers and backends * and transform them into valid HTTP responses. */ class HTTP extends Middleware { private $api; /** * @param API $api an instance of the api */ public function __construct(API $api){ $this->api = $api; } /** * If an Exception is being caught, return a JSON error response with * a suitable status code * @param Controller $controller the controller that is being called * @param string $methodName the name of the method that will be called on * the controller * @param \Exception $exception the thrown exception * @return Response a Response object */ public function afterException($controller, $methodName, \Exception $exception){ // If there's no proper status code associated, set it to 500. $response = new JSONResponse(); if($exception->getCode() < 100) { $response->setStatus(500); } else { $response->setStatus($exception->getCode()); } $response->setErrorMessage($exception->getMessage()); $this->api->log(get_class($controller) . '->' . $methodName . ': ' . $exception->getMessage()); return $response; } }