diff --git a/src/Utility/HttpStatus.php b/src/Utility/HttpStatus.php new file mode 100644 index 000000000..495f8529c --- /dev/null +++ b/src/Utility/HttpStatus.php @@ -0,0 +1,193 @@ + + */ + const MAP = [ + 100 => self::TEXT_100, + 101 => self::TEXT_101, + 200 => self::TEXT_200, + 201 => self::TEXT_201, + 202 => self::TEXT_202, + 203 => self::TEXT_203, + 204 => self::TEXT_204, + 205 => self::TEXT_205, + 206 => self::TEXT_206, + 300 => self::TEXT_300, + 301 => self::TEXT_301, + 302 => self::TEXT_302, + 303 => self::TEXT_303, + 304 => self::TEXT_304, + 305 => self::TEXT_305, + 306 => self::TEXT_306, + 307 => self::TEXT_307, + 400 => self::TEXT_400, + 401 => self::TEXT_401, + 402 => self::TEXT_402, + 403 => self::TEXT_403, + 404 => self::TEXT_404, + 405 => self::TEXT_405, + 406 => self::TEXT_406, + 407 => self::TEXT_407, + 408 => self::TEXT_408, + 409 => self::TEXT_409, + 410 => self::TEXT_410, + 411 => self::TEXT_411, + 412 => self::TEXT_412, + 413 => self::TEXT_413, + 414 => self::TEXT_414, + 415 => self::TEXT_415, + 416 => self::TEXT_416, + 417 => self::TEXT_417, + 418 => self::TEXT_418, + 428 => self::TEXT_428, + 429 => self::TEXT_429, + 431 => self::TEXT_431, + 500 => self::TEXT_500, + 501 => self::TEXT_501, + 502 => self::TEXT_502, + 503 => self::TEXT_503, + 504 => self::TEXT_504, + 505 => self::TEXT_505, + 511 => self::TEXT_511, + ]; + + /** + * Get the status message from a status code. + * + * @param int|string $code Status code. + * @return string Status message. + */ + public static function get_text($code) { + if (!self::is_valid_code($code)) { + throw InvalidArgument::create(1, '$code', 'a valid HTTP status code as an int or numeric string', $code); + } + + return self::MAP[$code]; + } + + /** + * Verify whether a status code is valid. + * + * @param int|string $code Status code to check. + * @return bool Whether the status code is valid. + */ + public static function is_valid_code($code) { + if (!is_int($code) && !is_string($code)) { + return false; + } + + return array_key_exists($code, self::MAP); + } +}