/** * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request * @param \Exception $e * * @return \Illuminate\Http\Response */ public function render($request, Exception $e) { $debug = env('APP_DEBUG', false); $message = $e->getMessage(); if (!$message) { $message = 'An error occurred'; } $debugData = ['exception' => get_class($e), 'message' => $e->getMessage(), 'code' => $e->getCode(), 'file' => $e->getFile(), 'line' => $e->getLine(), 'trace' => explode("\n", $e->getTraceAsString())]; $responseData = ['message' => $message]; if ($e instanceof HttpExceptionInterface) { if (method_exists($e, 'getResponse')) { if ($e instanceof TransformableInterface) { $responseData = $e->transform(app(ValidationExceptionTransformer::class)); } else { $responseData = $e->getResponse(); } } } if ($debug) { $responseData['debug'] = $debugData; } $response = parent::render($request, $e); $response = new JsonResponse($responseData, $response->getStatusCode(), $response->headers->all(), JSON_PRETTY_PRINT); $response->exception = $e; app('Asm89\\Stack\\CorsService')->addActualRequestHeaders($response, $request); return $response; }
/** * Make an API response from an existing JSON response. * * @param \Illuminate\Http\JsonResponse $json * * @return \Dingo\Api\Http\Response */ public static function makeFromJson(JsonResponse $json) { $new = static::create(json_decode($json->getContent(), true), $json->getStatusCode()); $new->headers = $json->headers; return $new; }