From 5c132c98ca605ca390e2a2ddbb42f01f749fa484 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Mon, 26 Sep 2011 01:57:31 -0400 Subject: [PATCH] requests cookies behaving --- requests/models.py | 12 ++---------- requests/sessions.py | 21 ++++++++++++++++++--- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/requests/models.py b/requests/models.py index 101ecb4c..3f23ee3c 100644 --- a/requests/models.py +++ b/requests/models.py @@ -164,6 +164,7 @@ class Request(object): # Create the lone response object. r = build(resp) + self.cookies.update(r.cookies) # Store the HTTP response, just in case. r._response = resp @@ -236,6 +237,7 @@ class Request(object): # Send her away! request.send() r = request.response + self.cookies.update(r.cookies) # Insert collected history. r.history = history @@ -344,16 +346,6 @@ class Request(object): if self.config.get('keepalive') and pools: self._pools = pools - # Extract cookies. - if self.cookies is not None: - pass - # cookies = cookiejar_from_dict(self.cookies) -# >>> C = Cookie.SimpleCookie() -# >>> C["rocky"] = "road" -# >>> C["rocky"]["path"] = "/cookie" -# >>> print C.output(header="Cookie:") -# Cookie: rocky=road; Path=/cookie - # self.cookiejar.extract_cookies(resp, req) # except (urllib2.HTTPError, urllib2.URLError), why: except Exception, why: diff --git a/requests/sessions.py b/requests/sessions.py index 83bfb1ea..16f4fba4 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -58,7 +58,7 @@ class Session(object): config=None): self.headers = headers - self.cookies = cookies + self.cookies = cookies or {} self.auth = auth self.timeout = timeout self.proxies = proxies @@ -96,10 +96,18 @@ class Session(object): # Merge local and session arguments. for attr in self.__attrs__: + # if attr == 'cookies': + # print getattr(self, attr) + # print kwargs.get(attr) + + # Merge local and session dictionaries. default_attr = getattr(self, attr) local_attr = kwargs.get(attr) - # Merge local and session dictionaries. + # Cookies persist. + if attr == 'cookies': + local_attr = local_attr or {} + new_attr = merge_kwargs(local_attr, default_attr) # Skip attributes that were set to None. @@ -116,8 +124,15 @@ class Session(object): _kwargs['_pools'] = self.__pools # TODO: Persist cookies. + # print self.cookies - return func(*args, **_kwargs) + # print _kwargs.get('cookies') + # print '%%%' + + r = func(*args, **_kwargs) + # print r.cookies + self.cookies.update(r.cookies) + return r return wrapper_func # Map and decorate each function available in requests.api