]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Add support for the HTTP PATCH method. 503/head
authorJon Parise <jon@indelible.org>
Wed, 2 May 2012 20:41:10 +0000 (13:41 -0700)
committerJon Parise <jon@indelible.org>
Wed, 2 May 2012 20:41:10 +0000 (13:41 -0700)
PATCH is a proposed standard described by RFC 5789:

    http://tools.ietf.org/html/rfc5789

tornado/httpserver.py
tornado/simple_httpclient.py
tornado/web.py

index 2f70f23382c667fc0b2bfa7bef80ce8393874763..e6fe996abd7a51ee050f21c64158a25522f70f73 100644 (file)
@@ -262,7 +262,7 @@ class HTTPConnection(object):
     def _on_request_body(self, data):
         self._request.body = data
         content_type = self._request.headers.get("Content-Type", "")
-        if self._request.method in ("POST", "PUT"):
+        if self._request.method in ("POST", "PATCH", "PUT"):
             if content_type.startswith("application/x-www-form-urlencoded"):
                 arguments = parse_qs_bytes(native_str(self._request.body))
                 for name, values in arguments.iteritems():
index 2fca257840d405b862a9461cfc242a0db7b9de8b..155012fcc16472076a021a06c5ffa87750473ff5 100644 (file)
@@ -123,7 +123,7 @@ class SimpleAsyncHTTPClient(AsyncHTTPClient):
 
 
 class _HTTPConnection(object):
-    _SUPPORTED_METHODS = set(["GET", "HEAD", "POST", "PUT", "DELETE"])
+    _SUPPORTED_METHODS = set(["GET", "HEAD", "POST", "PATCH", "PUT", "DELETE"])
 
     def __init__(self, io_loop, client, request, release_callback,
                  final_callback, max_buffer_size):
@@ -278,7 +278,7 @@ class _HTTPConnection(object):
         if self.request.user_agent:
             self.request.headers["User-Agent"] = self.request.user_agent
         if not self.request.allow_nonstandard_methods:
-            if self.request.method in ("POST", "PUT"):
+            if self.request.method in ("POST", "PATCH", "PUT"):
                 assert self.request.body is not None
             else:
                 assert self.request.body is None
index a516372d511fb808acc17c8f041b82264a5b9342..43a2c6cda83bffd72fb03708671ac49b8061ade5 100644 (file)
@@ -98,7 +98,8 @@ class RequestHandler(object):
     should override the class variable SUPPORTED_METHODS in your
     RequestHandler class.
     """
-    SUPPORTED_METHODS = ("GET", "HEAD", "POST", "DELETE", "PUT", "OPTIONS")
+    SUPPORTED_METHODS = ("GET", "HEAD", "POST", "DELETE", "PATCH", "PUT",
+                         "OPTIONS")
 
     _template_loaders = {}  # {path: template.BaseLoader}
     _template_loader_lock = threading.Lock()
@@ -165,6 +166,9 @@ class RequestHandler(object):
     def delete(self, *args, **kwargs):
         raise HTTPError(405)
 
+    def patch(self, *args, **kwargs):
+        raise HTTPError(405)
+
     def put(self, *args, **kwargs):
         raise HTTPError(405)