durusmail: quixote-users: [PATCH] http response code enumeration
Accept-aware functions via metaclasses
2003-09-25
2003-09-26
Re: Accept-aware functions via metaclasses
2003-09-26
2003-09-26
[PATCH] http response code enumeration
2003-09-26
2003-09-26
2003-09-26
[PATCH] http response code enumeration
John Belmonte
2003-09-26
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',
reply