diff --git a/.gitignore b/.gitignore index e5cfd99e..88e2b4f5 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ MANIFEST coverage.xml nosetests.xml -pylint.txt \ No newline at end of file +pylint.txt +*.pyc diff --git a/requests/core.py b/requests/core.py index 22c25d22..80ff5f8a 100644 --- a/requests/core.py +++ b/requests/core.py @@ -111,6 +111,9 @@ class Request(object): _handlers = [] + if self.cookiejar != None: + _handlers.append(urllib2.HTTPCookieProcessor(self.cookiejar)) + if self.auth: if not isinstance(self.auth.handler, (urllib2.AbstractBasicAuthHandler, urllib2.AbstractDigestAuthHandler)): auth_manager.add_password(self.auth.realm, self.url, self.auth.username, self.auth.password) @@ -119,6 +122,7 @@ class Request(object): _handlers.append(self.auth.handler) + if _handlers: _handlers.extend(get_handlers()) opener = urllib2.build_opener(*_handlers) return opener.open @@ -183,7 +187,10 @@ class Request(object): if not self.sent or anyway: try: opener = self._get_opener() - resp = opener(req) + resp = opener(req) + + if self.cookiejar != None: + self.cookiejar.extract_cookies(resp, req) except urllib2.HTTPError, why: self._build_response(why) self.response.error = why @@ -195,7 +202,6 @@ class Request(object): else: self.response.cached = True - self.sent = self.response.ok return self.sent @@ -406,7 +412,7 @@ def request(method, url, **kwargs): data = kwargs.pop('data', dict()) or kwargs.pop('params', dict()) r = Request(method=method, url=url, data=data, headers=kwargs.pop('headers', {}), - cookiejar=kwargs.pop('cookies', None), files=kwargs.pop('files', None), + cookiejar=kwargs.pop('cookiejar', None), files=kwargs.pop('files', None), auth=kwargs.pop('auth', auth_manager.get_auth(url))) r.send() diff --git a/test_requests.py b/test_requests.py index 177ed9f0..97d0e55a 100644 --- a/test_requests.py +++ b/test_requests.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- import unittest +import cookielib import requests @@ -114,6 +115,15 @@ class RequestsTestSuite(unittest.TestCase): self.assertFalse(r.error) r.raise_for_status() + def test_cookie_jar(self): + """ + .. todo:: This really doesn't test to make sure the cookie is working + """ + jar = cookielib.CookieJar() + self.assertFalse(jar) + + requests.get('http://google.com', cookies=jar) + self.assertTrue(jar)