Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
RequestHeader
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
1 / 1
 parseInput
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
3
1<?php declare(strict_types=1);
2/*
3 * This file is part of Aplus Framework HTTP Library.
4 *
5 * (c) Natan Felles <natanfelles@gmail.com>
6 *
7 * For the full copyright and license information, please view the LICENSE
8 * file that was distributed with this source code.
9 */
10namespace Framework\HTTP;
11
12/**
13 * Class RequestHeader.
14 *
15 * @see https://developer.mozilla.org/en-US/docs/Glossary/Request_header
16 *
17 * @package http
18 */
19class RequestHeader extends Header
20{
21    /**
22     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept
23     *
24     * @var string
25     */
26    public const ACCEPT = 'Accept';
27    /**
28     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Charset
29     *
30     * @var string
31     */
32    public const ACCEPT_CHARSET = 'Accept-Charset';
33    /**
34     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
35     *
36     * @var string
37     */
38    public const ACCEPT_ENCODING = 'Accept-Encoding';
39    /**
40     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language
41     *
42     * @var string
43     */
44    public const ACCEPT_LANGUAGE = 'Accept-Language';
45    /**
46     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Request-Headers
47     *
48     * @var string
49     */
50    public const ACCESS_CONTROL_REQUEST_HEADERS = 'Access-Control-Request-Headers';
51    /**
52     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Request-Method
53     *
54     * @var string
55     */
56    public const ACCESS_CONTROL_REQUEST_METHOD = 'Access-Control-Request-Method';
57    /**
58     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization
59     *
60     * @var string
61     */
62    public const AUTHORIZATION = 'Authorization';
63    /**
64     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cookie
65     *
66     * @var string
67     */
68    public const COOKIE = 'Cookie';
69    /**
70     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/DNT
71     *
72     * @var string
73     */
74    public const DNT = 'DNT';
75    /**
76     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Expect
77     *
78     * @var string
79     */
80    public const EXPECT = 'Expect';
81    /**
82     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Forwarded
83     *
84     * @var string
85     */
86    public const FORWARDED = 'Forwarded';
87    /**
88     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/From
89     *
90     * @var string
91     */
92    public const FROM = 'From';
93    /**
94     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Host
95     *
96     * @var string
97     */
98    public const HOST = 'Host';
99    /**
100     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Match
101     *
102     * @var string
103     */
104    public const IF_MATCH = 'If-Match';
105    /**
106     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Modified-Since
107     *
108     * @var string
109     */
110    public const IF_MODIFIED_SINCE = 'If-Modified-Since';
111    /**
112     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match
113     *
114     * @var string
115     */
116    public const IF_NONE_MATCH = 'If-None-Match';
117    /**
118     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Range
119     *
120     * @var string
121     */
122    public const IF_RANGE = 'If-Range';
123    /**
124     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Unmodified-Since
125     *
126     * @var string
127     */
128    public const IF_UNMODIFIED_SINCE = 'If-Unmodified-Since';
129    /**
130     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin
131     *
132     * @var string
133     */
134    public const ORIGIN = 'Origin';
135    /**
136     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Proxy-Authorization
137     *
138     * @var string
139     */
140    public const PROXY_AUTHORIZATION = 'Proxy-Authorization';
141    /**
142     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range
143     *
144     * @var string
145     */
146    public const RANGE = 'Range';
147    /**
148     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer
149     *
150     * @var string
151     */
152    public const REFERER = 'Referer';
153    /**
154     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-Fetch-Dest
155     *
156     * @var string
157     */
158    public const SEC_FETCH_DEST = 'Sec-Fetch-Dest';
159    /**
160     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-Fetch-Mode
161     *
162     * @var string
163     */
164    public const SEC_FETCH_MODE = 'Sec-Fetch-Mode';
165    /**
166     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-Fetch-Site
167     *
168     * @var string
169     */
170    public const SEC_FETCH_SITE = 'Sec-Fetch-Site';
171    /**
172     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-Fetch-User
173     *
174     * @var string
175     */
176    public const SEC_FETCH_USER = 'Sec-Fetch-User';
177    /**
178     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/TE
179     *
180     * @var string
181     */
182    public const TE = 'TE';
183    /**
184     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Upgrade-Insecure-Requests
185     *
186     * @var string
187     */
188    public const UPGRADE_INSECURE_REQUESTS = 'Upgrade-Insecure-Requests';
189    /**
190     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent
191     *
192     * @var string
193     */
194    public const USER_AGENT = 'User-Agent';
195    /**
196     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
197     *
198     * @var string
199     */
200    public const X_FORWARDED_FOR = 'X-Forwarded-For';
201    /**
202     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host
203     *
204     * @var string
205     */
206    public const X_FORWARDED_HOST = 'X-Forwarded-Host';
207    /**
208     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto
209     *
210     * @var string
211     */
212    public const X_FORWARDED_PROTO = 'X-Forwarded-Proto';
213    /**
214     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Real-IP
215     *
216     * @var string
217     */
218    public const X_REAL_IP = 'X-Real-IP';
219    /**
220     * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Requested-With
221     *
222     * @var string
223     */
224    public const X_REQUESTED_WITH = 'X-Requested-With';
225
226    /**
227     * @param array<string,scalar> $input
228     *
229     * @return array<string,string>
230     */
231    public static function parseInput(array $input) : array
232    {
233        $headers = [];
234        foreach ($input as $name => $value) {
235            if (\str_starts_with($name, 'HTTP_')) {
236                $name = \strtr(\substr($name, 5), ['_' => '-']);
237                $name = static::getName($name);
238                $headers[$name] = (string) $value;
239            }
240        }
241        return $headers;
242    }
243}