Passed
Push — develop ( f98037...4f3cbe )
by nguereza
03:04
created

HttpException::setHeaders()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * Platine Framework
5
 *
6
 * Platine Framework is a lightweight, high-performance, simple and elegant
7
 * PHP Web framework
8
 *
9
 * This content is released under the MIT License (MIT)
10
 *
11
 * Copyright (c) 2020 Platine Framework
12
 *
13
 * Permission is hereby granted, free of charge, to any person obtaining a copy
14
 * of this software and associated documentation files (the "Software"), to deal
15
 * in the Software without restriction, including without limitation the rights
16
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17
 * copies of the Software, and to permit persons to whom the Software is
18
 * furnished to do so, subject to the following conditions:
19
 *
20
 * The above copyright notice and this permission notice shall be included in all
21
 * copies or substantial portions of the Software.
22
 *
23
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29
 * SOFTWARE.
30
 */
31
32
declare(strict_types=1);
33
34
namespace Platine\Framework\Http\Exception;
35
36
use Exception;
37
use Platine\Http\ServerRequestInterface;
38
use Throwable;
39
40
/**
41
 * @class HttpException
42
 * @package Platine\Framework\Http\Exception
43
 */
44
class HttpException extends Exception
45
{
46
    /**
47
     * The instance of server request that throw this exception
48
     * @var ServerRequestInterface
49
     */
50
    protected ServerRequestInterface $request;
51
52
    /**
53
     * The exception title
54
     * @var string
55
     */
56
    protected string $title = '';
57
58
    /**
59
     * The exception description
60
     * @var string
61
     */
62
    protected string $description = '';
63
64
    /**
65
     * Additional headers to add into error response
66
     * @var array<string, mixed>
67
     */
68
    protected array $headers = [];
69
70
    /**
71
     * Create new instance
72
     * @param ServerRequestInterface $request
73
     * @param string $message
74
     * @param int $code
75
     * @param Throwable|null $previous
76
     * @param array<string, mixed> $headers
77
     */
78
    public function __construct(
79
        ServerRequestInterface $request,
80
        string $message = '',
81
        int $code = 0,
82
        ?Throwable $previous = null,
83
        array $headers = []
84
    ) {
85
        parent::__construct($message, $code, $previous);
86
        $this->request = $request;
87
        $this->headers = $headers;
88
    }
89
90
    /**
91
     * Return the server request
92
     * @return ServerRequestInterface
93
     */
94
    public function getRequest(): ServerRequestInterface
95
    {
96
        return $this->request;
97
    }
98
99
    /**
100
     * Return the title
101
     * @return string
102
     */
103
    public function getTitle(): string
104
    {
105
        return $this->title;
106
    }
107
108
    /**
109
     * Return the description
110
     * @return string
111
     */
112
    public function getDescription(): string
113
    {
114
        return $this->description;
115
    }
116
117
    /**
118
     *
119
     * @param string $title
120
     * @return $this
121
     */
122
    public function setTitle(string $title): self
123
    {
124
        $this->title = $title;
125
126
        return $this;
127
    }
128
129
    /**
130
     *
131
     * @param string $description
132
     * @return $this
133
     */
134
    public function setDescription(string $description): self
135
    {
136
        $this->description = $description;
137
138
        return $this;
139
    }
140
141
    /**
142
     * Return headers
143
     * @return array<string, mixed>
144
     */
145
    public function getHeaders(): array
146
    {
147
        return $this->headers;
148
    }
149
150
    /**
151
     * Set the headers
152
     * @param array<string, mixed> $headers
153
     * @return $this
154
     */
155
    public function setHeaders(array $headers): self
156
    {
157
        $this->headers = $headers;
158
        return $this;
159
    }
160
}
161