/var/www/hkosl.com/b2b2c/webadmin/libraies/klein/klein/src/Klein/HttpStatus.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
<?php
/**
 * Klein (klein.php) - A fast & flexible router for PHP
 *
 * @author      Chris O'Hara <cohara87@gmail.com>
 * @author      Trevor Suarez (Rican7) (contributor and v2 refactorer)
 * @copyright   (c) Chris O'Hara
 * @link        https://github.com/klein/klein.php
 * @license     MIT
 */

namespace Klein;

/**
 * HttpStatus
 *
 * HTTP status code and message translator
 */
class HttpStatus
{

    
/**
     * The HTTP status code
     *
     * @type int
     */
    
protected $code;

    
/**
     * The HTTP status message
     *
     * @type string
     */
    
protected $message;

    
/**
     * HTTP 1.1 status messages based on code
     *
     * @link http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
     * @type array
     */
    
protected static $http_messages = array(
        
// Informational 1xx
        
100 => 'Continue',
        
101 => 'Switching Protocols',

        
// Successful 2xx
        
200 => 'OK',
        
201 => 'Created',
        
202 => 'Accepted',
        
203 => 'Non-Authoritative Information',
        
204 => 'No Content',
        
205 => 'Reset Content',
        
206 => 'Partial Content',

        
// Redirection 3xx
        
300 => 'Multiple Choices',
        
301 => 'Moved Permanently',
        
302 => 'Found',
        
303 => 'See Other',
        
304 => 'Not Modified',
        
305 => 'Use Proxy',
        
306 => '(Unused)',
        
307 => 'Temporary Redirect',

        
// Client Error 4xx
        
400 => 'Bad Request',
        
401 => 'Unauthorized',
        
402 => 'Payment Required',
        
403 => 'Forbidden',
        
404 => 'Not Found',
        
405 => 'Method Not Allowed',
        
406 => 'Not Acceptable',
        
407 => 'Proxy Authentication Required',
        
408 => 'Request Timeout',
        
409 => 'Conflict',
        
410 => 'Gone',
        
411 => 'Length Required',
        
412 => 'Precondition Failed',
        
413 => 'Request Entity Too Large',
        
414 => 'Request-URI Too Long',
        
415 => 'Unsupported Media Type',
        
416 => 'Requested Range Not Satisfiable',
        
417 => 'Expectation Failed',

        
// Server Error 5xx
        
500 => 'Internal Server Error',
        
501 => 'Not Implemented',
        
502 => 'Bad Gateway',
        
503 => 'Service Unavailable',
        
504 => 'Gateway Timeout',
        
505 => 'HTTP Version Not Supported',
    );


    
/**
     * Constructor
     *
     * @param int $code The HTTP code
     * @param string $message (optional) HTTP message for the corresponding code
     */
    
public function __construct($code$message null)
    {
        
$this->setCode($code);

        if (
null === $message) {
            
$message = static::getMessageFromCode($code);
        }

        
$this->message $message;
    }

    
/**
     * Get the HTTP status code
     *
     * @return int
     */
    
public function getCode()
    {
        return 
$this->code;
    }

    
/**
     * Get the HTTP status message
     *
     * @return string
     */
    
public function getMessage()
    {
        return 
$this->message;
    }

    
/**
     * Set the HTTP status code
     *
     * @param int $code
     * @return HttpStatus
     */
    
public function setCode($code)
    {
        
$this->code = (int) $code;
        return 
$this;
    }

    
/**
     * Set the HTTP status message
     *
     * @param string $message
     * @return HttpStatus
     */
    
public function setMessage($message)
    {
        
$this->message = (string) $message;
        return 
$this;
    }

    
/**
     * Get a string representation of our HTTP status
     *
     * @return string
     */
    
public function getFormattedString()
    {
        
$string = (string) $this->code;

        if (
null !== $this->message) {
            
$string $string ' ' $this->message;
        }

        return 
$string;
    }

    
/**
     * Magic "__toString" method
     *
     * Allows the ability to arbitrarily use an instance of this class as a string
     * This method will be automatically called, returning a string representation
     * of this instance
     *
     * @return string
     */
    
public function __toString()
    {
        return 
$this->getFormattedString();
    }

    
/**
     * Get our HTTP 1.1 message from our passed code
     *
     * Returns null if no corresponding message was
     * found for the passed in code
     *
     * @param int $int
     * @return string|null
     */
    
public static function getMessageFromCode($int)
    {
        if (isset(static::
$http_messages$int ])) {
            return static::
$http_messages$int ];
        } else {
            return 
null;
        }
    }
}