Neil Schemenauer wrote: > On Fri, Sep 26, 2003 at 02:59:08PM -0400, John Belmonte wrote: > >>Note: while Quixote provides a table of HTTP response messages, it does >>not enumerate the response codes themselves (for example, >>METHOD_NOT_ALLOWED). So application developers are left to do this on >>their own :-(. > > Someone could provide a patch. :-) Indeed. Here is a patch to Quixote 0.6 to add the response codes to the http_response module. I've included codes not in the RFC in order to be consistent with Quixote's existing table of response code messages. Making Quixote use these internally rather than magic numbers is left as an exercise for the guilty :-). Of course, I think both the response code enumeration and messages are a prime candidate for the Python library proper. Does this really need to be duplicated in every web framework? Regards, -John -- http:// if le.o /
--- http_response.py.orig 2003-09-26 16:35:34.000000000 -0400 +++ http_response.py 2003-09-26 16:38:08.000000000 -0400 @@ -28,6 +28,58 @@ from rfc822 import formatdate from types import StringType, IntType +"""HTTP status code enumeration + +The names match the status descriptions in RFC-2616, with spaces and +hyphens substituted with an underbar. +""" +CONTINUE = 100 +SWITCHING_PROTOCOLS = 101 +PROCESSING = 102 # non-standard +OK = 200 +CREATED = 201 +ACCEPTED = 202 +NON_AUTHORITATIVE_INFORMATION = 203 +NO_CONTENT = 204 +RESET_CONTENT = 205 +PARTIAL_CONTENT = 206 +MULTI_STATUS = 207 # non-standard +MULTIPLE_CHOICES = 300 +MOVED_PERMANENTLY = 301 +MOVED_TEMPORARILY = 302 +SEE_OTHER = 303 +NOT_MODIFIED = 304 +USE_PROXY = 305 +TEMPORARY_REDIRECT = 307 +BAD_REQUEST = 400 +UNAUTHORIZED = 401 +PAYMENT_REQUIRED = 402 +FORBIDDEN = 403 +NOT_FOUND = 404 +METHOD_NOT_ALLOWED = 405 +NOT_ACCEPTABLE = 406 +PROXY_AUTHENTICATION_REQUIRED = 407 +REQUEST_TIME_OUT = 408 +CONFLICT = 409 +GONE = 410 +LENGTH_REQUIRED = 411 +PRECONDITION_FAILED = 412 +REQUEST_ENTITY_TOO_LARGE = 413 +REQUEST_URI_TOO_LARGE = 414 +UNSUPPORTED_MEDIA_TYPE = 415 +REQUESTED_RANGE_NOT_SATISFIABLE = 416 +EXPECTATION_FAILED = 417 +UNPROCESSABLE_ENTITY = 422 # non-standard +LOCKED = 423 # non-standard +FAILED_DEPENDENCY = 424 # non-standard +INTERNAL_SERVER_ERROR = 500 +NOT_IMPLEMENTED = 501 +BAD_GATEWAY = 502 +SERVICE_UNAVAILABLE = 503 +GATEWAY_TIME_OUT = 504 +HTTP_VERSION_NOT_SUPPORTED = 505 +INSUFFICIENT_STORAGE = 507 # non-standard + status_reasons = { 100: 'Continue', 101: 'Switching Protocols',