1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?php
- namespace Shaarli\Api\Exceptions;
- use Slim\Http\Response;
- /**
- * Abstract class ApiException
- *
- * Parent Exception related to the API, able to generate a valid Response (ResponseInterface).
- * Also can include various information in debug mode.
- */
- abstract class ApiException extends \Exception {
- /**
- * @var Response instance from Slim.
- */
- protected $response;
- /**
- * @var bool Debug mode enabled/disabled.
- */
- protected $debug;
- /**
- * Build the final response.
- *
- * @return Response Final response to give.
- */
- public abstract function getApiResponse();
- /**
- * Creates ApiResponse body.
- * In production mode, it will only return the exception message,
- * but in dev mode, it includes additional information in an array.
- *
- * @return array|string response body
- */
- protected function getApiResponseBody() {
- if ($this->debug !== true) {
- return $this->getMessage();
- }
- return [
- 'message' => $this->getMessage(),
- 'stacktrace' => get_class($this) .': '. $this->getTraceAsString()
- ];
- }
- /**
- * Build the Response object to return.
- *
- * @param int $code HTTP status.
- *
- * @return Response with status + body.
- */
- protected function buildApiResponse($code)
- {
- $style = $this->debug ? JSON_PRETTY_PRINT : null;
- return $this->response->withJson($this->getApiResponseBody(), $code, $style);
- }
- /**
- * @param Response $response
- */
- public function setResponse($response)
- {
- $this->response = $response;
- }
- /**
- * @param bool $debug
- */
- public function setDebug($debug)
- {
- $this->debug = $debug;
- }
- }
|