requests cookies behaving
authorKenneth Reitz <me@kennethreitz.com>
Mon, 26 Sep 2011 05:57:31 +0000 (01:57 -0400)
committerKenneth Reitz <me@kennethreitz.com>
Mon, 26 Sep 2011 05:57:31 +0000 (01:57 -0400)
requests/models.py
requests/sessions.py

index 101ecb4cd0cf5e06155a195d9dd124778ffb41ca..3f23ee3c9dd420f8d8f0fdcbb252ea62654e5c7a 100644 (file)
@@ -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:
index 83bfb1ea206f6b355d0d738c7153cf699589d5e5..16f4fba4e2a036cd01eb47119c2138123f0603e0 100644 (file)
@@ -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