Refactor exception handling by using interface
This commit is contained in:
		
							parent
							
								
									9ba7d1e6c5
								
							
						
					
					
						commit
						321a459421
					
				| 
						 | 
					@ -9,7 +9,7 @@ use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
 | 
				
			||||||
use Illuminate\Http\JsonResponse;
 | 
					use Illuminate\Http\JsonResponse;
 | 
				
			||||||
use Illuminate\Http\Request;
 | 
					use Illuminate\Http\Request;
 | 
				
			||||||
use Illuminate\Validation\ValidationException;
 | 
					use Illuminate\Validation\ValidationException;
 | 
				
			||||||
use Symfony\Component\HttpKernel\Exception\HttpException;
 | 
					use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
 | 
				
			||||||
use Throwable;
 | 
					use Throwable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Handler extends ExceptionHandler
 | 
					class Handler extends ExceptionHandler
 | 
				
			||||||
| 
						 | 
					@ -79,10 +79,10 @@ class Handler extends ExceptionHandler
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    protected function renderApiException(Throwable $e): JsonResponse
 | 
					    protected function renderApiException(Throwable $e): JsonResponse
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $code = $e->getCode() === 0 ? 500 : $e->getCode();
 | 
					        $code = 500;
 | 
				
			||||||
        $headers = [];
 | 
					        $headers = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ($e instanceof HttpException) {
 | 
					        if ($e instanceof HttpExceptionInterface) {
 | 
				
			||||||
            $code = $e->getStatusCode();
 | 
					            $code = $e->getStatusCode();
 | 
				
			||||||
            $headers = $e->getHeaders();
 | 
					            $headers = $e->getHeaders();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,8 +4,9 @@ namespace BookStack\Exceptions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Exception;
 | 
					use Exception;
 | 
				
			||||||
use Illuminate\Contracts\Support\Responsable;
 | 
					use Illuminate\Contracts\Support\Responsable;
 | 
				
			||||||
 | 
					use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PrettyException extends Exception implements Responsable
 | 
					class PrettyException extends Exception implements Responsable, HttpExceptionInterface
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @var ?string
 | 
					     * @var ?string
 | 
				
			||||||
| 
						 | 
					@ -17,6 +18,11 @@ class PrettyException extends Exception implements Responsable
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    protected $details = null;
 | 
					    protected $details = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @var array
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    protected $headers = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Render a response for when this exception occurs.
 | 
					     * Render a response for when this exception occurs.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
| 
						 | 
					@ -24,7 +30,7 @@ class PrettyException extends Exception implements Responsable
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public function toResponse($request)
 | 
					    public function toResponse($request)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $code = ($this->getCode() === 0) ? 500 : $this->getCode();
 | 
					        $code = $this->getStatusCode();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return response()->view('errors.' . $code, [
 | 
					        return response()->view('errors.' . $code, [
 | 
				
			||||||
            'message'  => $this->getMessage(),
 | 
					            'message'  => $this->getMessage(),
 | 
				
			||||||
| 
						 | 
					@ -46,4 +52,30 @@ class PrettyException extends Exception implements Responsable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return $this;
 | 
					        return $this;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get the desired HTTP status code for this exception.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function getStatusCode(): int
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return ($this->getCode() === 0) ? 500 : $this->getCode();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get the desired HTTP headers for this exception.
 | 
				
			||||||
 | 
					     * @return array<mixed>
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function getHeaders(): array
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->headers;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Set the desired HTTP headers for this exception.
 | 
				
			||||||
 | 
					     * @param array<mixed> $headers
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function setHeaders(array $headers): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->headers = $headers;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue