]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Support minor HTTP request attributes in SimpleAsyncHTTPClient.
authorBen Darnell <ben@bendarnell.com>
Thu, 21 Oct 2010 22:17:06 +0000 (15:17 -0700)
committerBen Darnell <ben@bendarnell.com>
Thu, 21 Oct 2010 22:17:06 +0000 (15:17 -0700)
Adds allow_nonstandard_methods and user_agent, and gives an explicit
warning for network_interface.

tornado/simple_httpclient.py

index 7f3c98a9d0e043914267adbbf7ccc23fda0c31be..45d4c7475a22acc9d5146b2119f8bfd8e36011e7 100644 (file)
@@ -59,6 +59,8 @@ class SimpleAsyncHTTPClient(object):
 
 
 class _HTTPConnection(object):
+    _SUPPORTED_METHODS = set(["GET", "HEAD", "POST", "PUT", "DELETE"])
+
     def __init__(self, io_loop, request, callback):
         self.io_loop = io_loop
         self.request = request
@@ -86,6 +88,12 @@ class _HTTPConnection(object):
                                 functools.partial(self._on_connect, parsed))
 
     def _on_connect(self, parsed):
+        if (self.request.method not in self._SUPPORTED_METHODS and
+            not self.request.allow_nonstandard_methods):
+            raise KeyError("unknown method %s" % self.request.method)
+        if self.request.network_interface:
+            raise NotImplementedError(
+                "network interface selection not supported")
         if "Host" not in self.request.headers:
             self.request.headers["Host"] = parsed.netloc
         if self.request.auth_username:
@@ -93,6 +101,8 @@ class _HTTPConnection(object):
                               self.request.auth_password)
             self.request.headers["Authorization"] = ("Basic %s" %
                                                      auth.encode("base64"))
+        if self.request.user_agent:
+            self.request.headers["User-Agent"] = self.request.user_agent
         has_body = self.request.method in ("POST", "PUT")
         if has_body:
             assert self.request.body is not None