1 | <?php |
||
2 | |||
3 | namespace VGirol\JsonApi\Resources; |
||
4 | |||
5 | use Illuminate\Http\JsonResponse; |
||
6 | use VGirol\JsonApiConstant\Members; |
||
7 | |||
8 | class ErrorResource extends BaseResource |
||
9 | { |
||
10 | /** |
||
11 | * Transform the resource into an array. |
||
12 | * |
||
13 | * @param \Illuminate\Http\Request $request |
||
14 | * @return array |
||
15 | */ |
||
16 | public function toArray($request): array |
||
17 | { |
||
18 | $meta = null; |
||
19 | if (config('app.debug')) { |
||
20 | if (method_exists($this->resource, 'getCode')) { |
||
21 | $meta[Members::ERROR_CODE] = $this->resource->getCode(); |
||
22 | } |
||
23 | if (method_exists($this->resource, 'getTrace')) { |
||
24 | $meta['trace'] = array_slice($this->resource->getTrace(), 0, config('jsonapi.errorTraceLength')); |
||
25 | } |
||
26 | } |
||
27 | |||
28 | $statusCode = $this->getStatusCode(); |
||
29 | $error = [ |
||
30 | Members::ERROR_STATUS => (string)$statusCode, |
||
31 | Members::ERROR_TITLE => JsonResponse::$statusTexts[$statusCode], |
||
32 | Members::ERROR_DETAILS => $this->resource->getMessage() |
||
33 | ]; |
||
34 | if (!is_null($meta)) { |
||
0 ignored issues
–
show
introduced
by
![]() |
|||
35 | $error[Members::META] = $meta; |
||
36 | } |
||
37 | |||
38 | return $error; |
||
39 | } |
||
40 | |||
41 | public function getStatusCode() |
||
42 | { |
||
43 | if (method_exists($this->resource, 'getStatusCode')) { |
||
44 | $statusCode = $this->resource->getStatusCode(); |
||
45 | } elseif (property_exists($this->resource, Members::ERROR_STATUS)) { |
||
46 | $statusCode = $this->resource->status; |
||
47 | } else { |
||
48 | $statusCode = JsonResponse::HTTP_INTERNAL_SERVER_ERROR; |
||
49 | } |
||
50 | |||
51 | return $statusCode; |
||
52 | } |
||
53 | } |
||
54 |