diff http-response-status-codes.inc @ 5:18aafb1a8986

Better handling of errors and globals.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Fri, 20 May 2011 13:25:53 +0200
parents
children 9dab5b96b789
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/http-response-status-codes.inc	Fri May 20 13:25:53 2011 +0200
@@ -0,0 +1,256 @@
+<?php
+
+/**
+
+* StatusCodes provides named constants for
+
+* HTTP protocol status codes. Written for the
+
+* Recess Framework (http://www.recessframework.com/)
+
+*
+
+* @author Kris Jordan
+
+* @license MIT
+
+* @package recess.http
+
+*/
+
+class StatusCodes {
+
+// [Informational 1xx]
+
+const HTTP_CONTINUE = 100;
+
+const HTTP_SWITCHING_PROTOCOLS = 101;
+
+// [Successful 2xx]
+
+const HTTP_OK = 200;
+
+const HTTP_CREATED = 201;
+
+const HTTP_ACCEPTED = 202;
+
+const HTTP_NONAUTHORITATIVE_INFORMATION = 203;
+
+const HTTP_NO_CONTENT = 204;
+
+const HTTP_RESET_CONTENT = 205;
+
+const HTTP_PARTIAL_CONTENT = 206;
+
+// [Redirection 3xx]
+
+const HTTP_MULTIPLE_CHOICES = 300;
+
+const HTTP_MOVED_PERMANENTLY = 301;
+
+const HTTP_FOUND = 302;
+
+const HTTP_SEE_OTHER = 303;
+
+const HTTP_NOT_MODIFIED = 304;
+
+const HTTP_USE_PROXY = 305;
+
+const HTTP_UNUSED= 306;
+
+const HTTP_TEMPORARY_REDIRECT = 307;
+
+// [Client Error 4xx]
+
+const errorCodesBeginAt = 400;
+
+const HTTP_BAD_REQUEST = 400;
+
+const HTTP_UNAUTHORIZED = 401;
+
+const HTTP_PAYMENT_REQUIRED = 402;
+
+const HTTP_FORBIDDEN = 403;
+
+const HTTP_NOT_FOUND = 404;
+
+const HTTP_METHOD_NOT_ALLOWED = 405;
+
+const HTTP_NOT_ACCEPTABLE = 406;
+
+const HTTP_PROXY_AUTHENTICATION_REQUIRED = 407;
+
+const HTTP_REQUEST_TIMEOUT = 408;
+
+const HTTP_CONFLICT = 409;
+
+const HTTP_GONE = 410;
+
+const HTTP_LENGTH_REQUIRED = 411;
+
+const HTTP_PRECONDITION_FAILED = 412;
+
+const HTTP_REQUEST_ENTITY_TOO_LARGE = 413;
+
+const HTTP_REQUEST_URI_TOO_LONG = 414;
+
+const HTTP_UNSUPPORTED_MEDIA_TYPE = 415;
+
+const HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
+
+const HTTP_EXPECTATION_FAILED = 417;
+
+// [Server Error 5xx]
+
+const HTTP_INTERNAL_SERVER_ERROR = 500;
+
+const HTTP_NOT_IMPLEMENTED = 501;
+
+const HTTP_BAD_GATEWAY = 502;
+
+const HTTP_SERVICE_UNAVAILABLE = 503;
+
+const HTTP_GATEWAY_TIMEOUT = 504;
+
+const HTTP_VERSION_NOT_SUPPORTED = 505;
+
+		
+
+private static $messages = array(
+
+// [Informational 1xx]
+
+100=>'100 Continue',
+
+101=>'101 Switching Protocols',
+
+// [Successful 2xx]
+
+200=>'200 OK',
+
+201=>'201 Created',
+
+202=>'202 Accepted',
+
+203=>'203 Non-Authoritative Information',
+
+204=>'204 No Content',
+
+205=>'205 Reset Content',
+
+206=>'206 Partial Content',
+
+// [Redirection 3xx]
+
+300=>'300 Multiple Choices',
+
+301=>'301 Moved Permanently',
+
+302=>'302 Found',
+
+303=>'303 See Other',
+
+304=>'304 Not Modified',
+
+305=>'305 Use Proxy',
+
+306=>'306 (Unused)',
+
+307=>'307 Temporary Redirect',
+
+// [Client Error 4xx]
+
+400=>'400 Bad Request',
+
+401=>'401 Unauthorized',
+
+402=>'402 Payment Required',
+
+403=>'403 Forbidden',
+
+404=>'404 Not Found',
+
+405=>'405 Method Not Allowed',
+
+406=>'406 Not Acceptable',
+
+407=>'407 Proxy Authentication Required',
+
+408=>'408 Request Timeout',
+
+409=>'409 Conflict',
+
+410=>'410 Gone',
+
+411=>'411 Length Required',
+
+412=>'412 Precondition Failed',
+
+413=>'413 Request Entity Too Large',
+
+414=>'414 Request-URI Too Long',
+
+415=>'415 Unsupported Media Type',
+
+416=>'416 Requested Range Not Satisfiable',
+
+417=>'417 Expectation Failed',
+
+// [Server Error 5xx]
+
+500=>'500 Internal Server Error',
+
+501=>'501 Not Implemented',
+
+502=>'502 Bad Gateway',
+
+503=>'503 Service Unavailable',
+
+504=>'504 Gateway Timeout',
+
+505=>'505 HTTP Version Not Supported'
+
+);
+
+	
+
+public static function httpHeaderFor($code) {
+
+return 'HTTP/1.1 ' . self::$messages[$code];
+
+}
+
+public static function getMessageForCode($code) {
+
+return self::$messages[$code];
+
+	}
+	
+
+public static function isError($code) {
+
+return is_numeric($code) && $code >= self::HTTP_BAD_REQUEST;
+
+	}
+	
+
+public static function canHaveBody($code) {
+
+return
+
+// True if not in 100s
+
+($code < self::HTTP_CONTINUE || $code >= self::HTTP_OK)
+
+&& // and not 204 NO CONTENT
+
+$code != self::HTTP_NO_CONTENT
+
+&& // and not 304 NOT MODIFIED
+
+$code != self::HTTP_NOT_MODIFIED;
+
+	}
+}
+
+?>