Issues (115)

src/Resources/ErrorResource.php (1 issue)

Severity
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
The condition is_null($meta) is always true.
Loading history...
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