http: Add two new exceptions, one constant
authorMichael Hanselmann <hansmi@google.com>
Wed, 2 Dec 2009 16:36:44 +0000 (17:36 +0100)
committerMichael Hanselmann <hansmi@google.com>
Fri, 22 Jan 2010 14:17:18 +0000 (15:17 +0100)
These will be useful in the future in case we don't enfore JSON encoding
anymore in the http.server module. The HTTP 1.1 RFC recommends error 415
(Unsupported Media Type) to be returned in case the client requests an
unsupported content-type. If the client doesn't send a “Content-Type” in
the request, a content-type of “application/octet-stream” is implied.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

lib/http/__init__.py

index e1b3ba7..272cff0 100644 (file)
@@ -66,6 +66,8 @@ HTTP_AUTHORIZATION = "Authorization"
 HTTP_AUTHENTICATION_INFO = "Authentication-Info"
 HTTP_ALLOW = "Allow"
 
+HTTP_APP_OCTET_STREAM = "application/octet-stream"
+
 _SSL_UNEXPECTED_EOF = "Unexpected EOF"
 
 # Socket operations
@@ -178,6 +180,17 @@ class HttpMethodNotAllowed(HttpException):
   code = 405
 
 
+class HttpNotAcceptable(HttpException):
+  """406 Not Acceptable
+
+  RFC2616, 10.4.7: The resource identified by the request is only capable of
+  generating response entities which have content characteristics not
+  acceptable according to the accept headers sent in the request.
+
+  """
+  code = 406
+
+
 class HttpRequestTimeout(HttpException):
   """408 Request Timeout
 
@@ -235,6 +248,17 @@ class HttpPreconditionFailed(HttpException):
   code = 412
 
 
+class HttpUnsupportedMediaType(HttpException):
+  """415 Unsupported Media Type
+
+  RFC2616, 10.4.16: The server is refusing to service the request because the
+  entity of the request is in a format not supported by the requested resource
+  for the requested method.
+
+  """
+  code = 415
+
+
 class HttpInternalServerError(HttpException):
   """500 Internal Server Error