Пример #1
0
 public function __invoke(Request $request, Response $response, $error)
 {
     $responseBuilder = new CASSResponseBuilder($response);
     $responseBuilder->setStatusBadRequest();
     if ($error === null) {
         $errorType = '404';
         $responseBuilder->setError($error);
         $responseBuilder->setStatusNotFound()->setError('404 Not Found');
     } else {
         if ($error instanceof \Exception) {
             $errorType = get_class($error);
             $responseBuilder->setError($error);
             try {
                 throw $error;
             } catch (EntityNotFoundException $e) {
                 $responseBuilder->setStatusNotFound();
             } catch (InvalidJSONSchema $e) {
                 $responseBuilder->setStatusBadRequest();
             } catch (BadCommandCallException $e) {
                 $responseBuilder->setStatusBadRequest();
             } catch (NotFoundException $e) {
                 $responseBuilder->setStatusNotFound();
             } catch (PermissionsDeniedException $e) {
                 $responseBuilder->setStatusNotAllowed();
             } catch (\Exception $e) {
                 $responseBuilder->setStatusInternalError();
             }
         } else {
             if ($error instanceof \Error) {
                 throw $error;
             } else {
                 if (is_int($error)) {
                     $errorType = "INT_CODE";
                     $responseBuilder->setError(sprintf("ErrorCode: %d", $error));
                 } else {
                     throw new \Exception(sprintf('Unknown error: %s', get_class($error)));
                 }
             }
         }
     }
     return $responseBuilder->setJson(['error_type' => $errorType])->build();
 }