From: Kenneth Reitz Date: Mon, 26 Sep 2011 05:57:31 +0000 (-0400) Subject: requests cookies behaving X-Git-Tag: v0.8.0~94^2~42 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5c132c98ca605ca390e2a2ddbb42f01f749fa484;p=services%2Fpython-requests.git requests cookies behaving --- diff --git a/requests/models.py b/requests/models.py index 101ecb4..3f23ee3 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 83bfb1e..16f4fba 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 + + # print _kwargs.get('cookies') + # print '%%%' - return func(*args, **_kwargs) + 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