X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/c429cf78187e80deb63982a282a1c6889f30291a..refs/pull/5280/head:/app/Exceptions/JsonDebugException.php diff --git a/app/Exceptions/JsonDebugException.php b/app/Exceptions/JsonDebugException.php index e037fcb8e..1fa52c4a2 100644 --- a/app/Exceptions/JsonDebugException.php +++ b/app/Exceptions/JsonDebugException.php @@ -3,24 +3,30 @@ namespace BookStack\Exceptions; use Exception; +use Illuminate\Http\JsonResponse; +use Illuminate\Contracts\Support\Responsable; -class JsonDebugException extends Exception +class JsonDebugException extends Exception implements Responsable { - protected $data; + protected array $data; /** * JsonDebugException constructor. */ - public function __construct($data) + public function __construct(array $data) { $this->data = $data; + parent::__construct(); } /** - * Covert this exception into a response. + * Convert this exception into a response. + * We add a manual data conversion to UTF8 to ensure any binary data is presentable as a JSON string. */ - public function render() + public function toResponse($request): JsonResponse { - return response()->json($this->data); + $cleaned = mb_convert_encoding($this->data, 'UTF-8'); + + return response()->json($cleaned); } }