Issues (88)

src/POData/Common/HttpStatus.php (1 issue)

Severity
1
<?php
2
3
declare(strict_types=1);
4
5
namespace POData\Common;
6
7
/**
8
 * Class HttpStatus.
9
 */
10
class HttpStatus
11
{
12
    const CODE_CONTINUE                        = 100;
13
    const CODE_SWITCHING_PROTOCOLS             = 101;
14
    const CODE_OK                              = 200;
15
    const CODE_CREATED                         = 201;
16
    const CODE_ACCEPTED                        = 202;
17
    const CODE_NON_AUTHRATIVE_INFORMATION      = 203;
18
    const CODE_NOCONTENT                       = 204;
19
    const CODE_RESET_CONTENT                   = 205;
20
    const CODE_PARTIAL_CONTENT                 = 206;
21
    const CODE_MULTIPLE_CHOICE                 = 300;
22
    const CODE_MOVED_PERMANENTLY               = 301;
23
    const CODE_FOUND                           = 302;
24
    const CODE_SEE_OTHER                       = 303;
25
    const CODE_NOT_MODIFIED                    = 304;
26
    const CODE_USE_PROXY                       = 305;
27
    const CODE_UNUSED                          = 306;
28
    const CODE_TEMP_REDIRECT                   = 307;
29
    const CODE_BAD_REQUEST                     = 400;
30
    const CODE_UNAUTHORIZED                    = 401;
31
    const CODE_PAYMENT_REQ                     = 402;
32
    const CODE_FORBIDDEN                       = 403;
33
    const CODE_NOT_FOUND                       = 404;
34
    const CODE_METHOD_NOT_ALLOWED              = 405;
35
    const CODE_NOT_ACCEPTABLE                  = 406;
36
    const CODE_PROXY_AUTHENTICATION_REQUIRED   = 407;
37
    const CODE_REQUEST_TIMEOUT                 = 408;
38
    const CODE_CONFLICT                        = 409;
39
    const CODE_GONE                            = 410;
40
    const CODE_LENGTH_REQUIRED                 = 411;
41
    const CODE_PRECONDITION_FAILED             = 412;
42
    const CODE_REQUEST_ENTITY_TOOLONG          = 413;
43
    const CODE_REQUEST_URI_TOOLONG             = 414;
44
    const CODE_UNSUPPORTED_MEDIATYPE           = 415;
45
    const CODE_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
46
    const CODE_EXPECTATION_FAILED              = 417;
47
    const CODE_INTERNAL_SERVER_ERROR           = 500;
48
    const CODE_NOT_IMPLEMENTED                 = 501;
49
    const CODE_BAD_GATEWAY                     = 502;
50
    const CODE_SERVICE_UNAVAILABLE             = 503;
51
    const CODE_GATEWAY_TIMEOUT                 = 504;
52
    const CODE_HTTP_VERSION_NOT_SUPPORTED      = 505;
53
54
    private static $reverse = [
55
        100 => self::CODE_CONTINUE,
56
        101 => self::CODE_SWITCHING_PROTOCOLS,
57
        200 => self::CODE_OK,
58
        201 => self::CODE_CREATED,
59
        202 => self::CODE_ACCEPTED,
60
        203 => self::CODE_NON_AUTHRATIVE_INFORMATION,
61
        204 => self::CODE_NOCONTENT,
62
        205 => self::CODE_RESET_CONTENT,
63
        206 => self::CODE_PARTIAL_CONTENT,
64
        300 => self::CODE_MULTIPLE_CHOICE,
65
        301 => self::CODE_MOVED_PERMANENTLY,
66
        302 => self::CODE_FOUND,
67
        303 => self::CODE_SEE_OTHER,
68
        304 => self::CODE_NOT_MODIFIED,
69
        305 => self::CODE_USE_PROXY,
70
        306 => self::CODE_UNUSED,
71
        307 => self::CODE_TEMP_REDIRECT,
72
        400 => self::CODE_BAD_REQUEST,
73
        401 => self::CODE_UNAUTHORIZED,
74
        402 => self::CODE_PAYMENT_REQ,
75
        403 => self::CODE_FORBIDDEN,
76
        404 => self::CODE_NOT_FOUND,
77
        405 => self::CODE_METHOD_NOT_ALLOWED,
78
        406 => self::CODE_NOT_ACCEPTABLE,
79
        407 => self::CODE_PROXY_AUTHENTICATION_REQUIRED,
80
        408 => self::CODE_REQUEST_TIMEOUT,
81
        409 => self::CODE_CONFLICT,
82
        410 => self::CODE_GONE,
83
        411 => self::CODE_LENGTH_REQUIRED,
84
        412 => self::CODE_PRECONDITION_FAILED,
85
        413 => self::CODE_REQUEST_ENTITY_TOOLONG,
86
        414 => self::CODE_REQUEST_URI_TOOLONG,
87
        415 => self::CODE_UNSUPPORTED_MEDIATYPE,
88
        416 => self::CODE_REQUESTED_RANGE_NOT_SATISFIABLE,
89
        417 => self::CODE_EXPECTATION_FAILED,
90
        500 => self::CODE_INTERNAL_SERVER_ERROR,
91
        501 => self::CODE_NOT_IMPLEMENTED,
92
        502 => self::CODE_BAD_GATEWAY,
93
        503 => self::CODE_SERVICE_UNAVAILABLE,
94
        504 => self::CODE_GATEWAY_TIMEOUT,
95
        505 => self::CODE_HTTP_VERSION_NOT_SUPPORTED,
96
    ];
97
98
    private static $mapping = [
99
        self::CODE_CONTINUE => 'Continue',
100
        self::CODE_SWITCHING_PROTOCOLS => 'Switching Protocols',
101
        self::CODE_OK => 'OK',
102
        self::CODE_CREATED => 'Created',
103
        self::CODE_ACCEPTED => 'Accepted',
104
        self::CODE_NON_AUTHRATIVE_INFORMATION => 'Non-Authoritative Information',
105
        self::CODE_NOCONTENT => 'No Content',
106
        self::CODE_RESET_CONTENT => 'ResetContent',
107
        self::CODE_PARTIAL_CONTENT => 'Partial Content',
108
        self::CODE_MULTIPLE_CHOICE => 'Multiple Choices',
109
        self::CODE_MOVED_PERMANENTLY => 'Moved Permanently',
110
        self::CODE_FOUND => 'Found',
111
        self::CODE_SEE_OTHER => 'See Other',
112
        self::CODE_NOT_MODIFIED => 'Not Modified',
113
        self::CODE_USE_PROXY => 'Use Proxy',
114
        self::CODE_UNUSED => 'Unused',
115
        self::CODE_TEMP_REDIRECT => 'Temporary Redirect',
116
        self::CODE_BAD_REQUEST => 'Bad Request',
117
        self::CODE_UNAUTHORIZED => 'Unauthorized',
118
        self::CODE_PAYMENT_REQ => 'Payment Required',
119
        self::CODE_FORBIDDEN => 'Forbidden',
120
        self::CODE_NOT_FOUND => 'Not Found',
121
        self::CODE_METHOD_NOT_ALLOWED => 'Method Not Allowed',
122
        self::CODE_NOT_ACCEPTABLE => 'Not Acceptable',
123
        self::CODE_PROXY_AUTHENTICATION_REQUIRED => 'Proxy Authentication Required',
124
        self::CODE_REQUEST_TIMEOUT => 'Request Timeout',
125
        self::CODE_CONFLICT => 'Conflict',
126
        self::CODE_GONE => 'Gone',
127
        self::CODE_LENGTH_REQUIRED => 'Length Required',
128
        self::CODE_PRECONDITION_FAILED => 'Precondition Failed',
129
        self::CODE_REQUEST_ENTITY_TOOLONG => 'Request Entity Too Large',
130
        self::CODE_REQUEST_URI_TOOLONG => 'Request URI Too Large',
131
        self::CODE_UNSUPPORTED_MEDIATYPE => 'Unsupported Media Type',
132
        self::CODE_REQUESTED_RANGE_NOT_SATISFIABLE => 'Requested Range Not Satisfiable',
133
        self::CODE_EXPECTATION_FAILED => 'Expectation Failed',
134
        self::CODE_INTERNAL_SERVER_ERROR => 'Internal Server Error',
135
        self::CODE_NOT_IMPLEMENTED => 'Not Implemented',
136
        self::CODE_BAD_GATEWAY => 'Bad Gateway',
137
        self::CODE_SERVICE_UNAVAILABLE => 'Service Unavailable',
138
        self::CODE_GATEWAY_TIMEOUT => 'Gateway Timeout',
139
        self::CODE_HTTP_VERSION_NOT_SUPPORTED => 'HTTP Version Not Supported',
140
    ];
141
142
    /**
143
     * Get status description from status code.
144
     *
145
     * @param int $statusCode status code
146
     *
147
     * @return string|null
148
     */
149
    public static function getStatusDescription($statusCode)
150
    {
151
        // if int, look up corresponding constant value - if it doesn't exist, bail out
152
        if (is_int($statusCode)) {
0 ignored issues
show
The condition is_int($statusCode) is always true.
Loading history...
153
            if (!array_key_exists($statusCode, self::$reverse)) {
154
                return null;
155
            }
156
            $mapStatus = self::$reverse[$statusCode];
157
        } else {
158
            $mapStatus = $statusCode;
159
        }
160
161
        // here mainly to catch non-integral inputs that can't be mapped to a defined class constant
162
        if (!array_key_exists($mapStatus, self::$mapping)) {
163
            return null;
164
        }
165
166
        return self::$mapping[$mapStatus];
167
    }
168
}
169