]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Add basic auth support to SimpleAsyncHTTPClient
authorBen Darnell <ben@bendarnell.com>
Thu, 21 Oct 2010 21:58:30 +0000 (14:58 -0700)
committerBen Darnell <ben@bendarnell.com>
Thu, 21 Oct 2010 21:58:30 +0000 (14:58 -0700)
tornado/simple_httpclient.py
tornado/test/simple_httpclient_test.py

index 34a06e5de6064315d834c9ee522083676db57011..7f3c98a9d0e043914267adbbf7ccc23fda0c31be 100644 (file)
@@ -88,6 +88,11 @@ class _HTTPConnection(object):
     def _on_connect(self, parsed):
         if "Host" not in self.request.headers:
             self.request.headers["Host"] = parsed.netloc
+        if self.request.auth_username:
+            auth = "%s:%s" % (self.request.auth_username,
+                              self.request.auth_password)
+            self.request.headers["Authorization"] = ("Basic %s" %
+                                                     auth.encode("base64"))
         has_body = self.request.method in ("POST", "PUT")
         if has_body:
             assert self.request.body is not None
index a30ea8fab086a8d4a28b75b07f06eca9169638f4..1bece2a3dda45a393c5c5a308f9ec1129a72561e 100644 (file)
@@ -21,12 +21,17 @@ class ChunkHandler(RequestHandler):
         self.flush()
         self.write("qwer")
 
+class AuthHandler(RequestHandler):
+    def get(self):
+        self.finish(self.request.headers["Authorization"])
+
 class SimpleHTTPClientTestCase(AsyncHTTPTestCase, LogTrapTestCase):
     def get_app(self):
         return Application([
             ("/hello", HelloWorldHandler),
             ("/post", PostHandler),
             ("/chunk", ChunkHandler),
+            ("/auth", AuthHandler),
             ])
 
     def setUp(self):
@@ -67,3 +72,8 @@ class SimpleHTTPClientTestCase(AsyncHTTPTestCase, LogTrapTestCase):
                               streaming_callback=chunks.append)
         self.assertEqual(chunks, ["asdf", "qwer"])
         self.assertFalse(response.body)
+
+    def test_basic_auth(self):
+        self.assertEqual(self.fetch("/auth", auth_username="Aladdin",
+                                    auth_password="open sesame").body,
+                         "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==")