From d06f8f4bcd46d4f2b620ea1cb614731f4b74ab71 Mon Sep 17 00:00:00 2001 From: Ben Darnell Date: Thu, 21 Oct 2010 15:17:06 -0700 Subject: [PATCH] Support minor HTTP request attributes in SimpleAsyncHTTPClient. Adds allow_nonstandard_methods and user_agent, and gives an explicit warning for network_interface. --- tornado/simple_httpclient.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tornado/simple_httpclient.py b/tornado/simple_httpclient.py index 7f3c98a9..45d4c747 100644 --- a/tornado/simple_httpclient.py +++ b/tornado/simple_httpclient.py @@ -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