From e4c690e7bcf90c78bc052b52b284c1fa599b1f8f Mon Sep 17 00:00:00 2001 From: robmadole Date: Tue, 1 Mar 2011 09:21:00 -0600 Subject: [PATCH] Initial support for cookies --- requests/core.py | 12 +++++++++--- test_requests.py | 10 ++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/requests/core.py b/requests/core.py index b426a4e..b88d0dc 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 22716f1..bcf2b9a 100644 --- a/test_requests.py +++ b/test_requests.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- import unittest +import cookielib import requests @@ -103,6 +104,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) -- 2.7.4