Passed
Push — master ( d7d8c0...c26592 )
by Mads
03:35
created

DebugRenderer::render()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 9
nc 1
nop 0
dl 0
loc 13
ccs 0
cts 9
cp 0
crap 2
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace Napp\Core\Api\Exceptions\Renderer;
4
5
use Illuminate\Http\JsonResponse;
6
7
class DebugRenderer implements RendererInterface
8
{
9
    /**
10
     * @var \Exception
11
     */
12
    protected $exception;
13
14
    /**
15
     * @var int
16
     */
17
    protected $statusCode;
18
19
    /**
20
     * @var string
21
     */
22
    protected $statusMessage;
23
24
    /**
25
     * @var int
26
     */
27
    protected $responseCode;
28
29
    /**
30
     * @return JsonResponse
31
     */
32
    public function render(): JsonResponse
33
    {
34
        return response()->json(
35
            [
36
            'error' => [
37
                'code' => $this->statusCode,
38
                'message' => $this->statusMessage,
39
                'type' => get_class($this->exception),
40
                'file' => $this->exception->getFile(),
41
                'line' => $this->exception->getLine(),
42
                'trace' => $this->formatTrace($this->exception->getTrace())
43
            ]],
44
            $this->responseCode
45
        );
46
    }
47
48
    /**
49
     * @param \Exception $e
50
     * @return void
51
     */
52
    public function setException(\Exception $e)
53
    {
54
        $this->exception = $e;
55
    }
56
57
    /**
58
     * @param int $responseCode
59
     * @return void
60
     */
61
    public function setResponseCode($responseCode)
62
    {
63
        $this->responseCode = $responseCode;
64
    }
65
66
    /**
67
     * @param int $statusCode
68
     * @return void
69
     */
70
    public function setStatusCode($statusCode)
71
    {
72
        $this->statusCode = $statusCode;
73
    }
74
75
    /**
76
     * @param string $statusMessage
77
     * @return void
78
     */
79
    public function setStatusMessage($statusMessage)
80
    {
81
        $this->statusMessage = $statusMessage;
82
    }
83
84
    /**
85
     * Remove the args property from the trace array objects.
86
     *
87
     * @param array $trace
88
     * @return array
89
     */
90
    protected function formatTrace(array $trace)
91
    {
92
        foreach ($trace as &$t) {
93
            $t = array_except($t, ['args']);
94
        }
95
96
        return $trace;
97
    }
98
}
99