get cookies from response
authorKenneth Reitz <me@kennethreitz.com>
Wed, 17 Aug 2011 05:23:49 +0000 (01:23 -0400)
committerKenneth Reitz <me@kennethreitz.com>
Wed, 17 Aug 2011 05:23:49 +0000 (01:23 -0400)
#116

requests/models.py
requests/utils.py [new file with mode: 0644]

index c802f03..5e54f37 100644 (file)
@@ -20,6 +20,7 @@ from .monkeys import Request as _Request, HTTPBasicAuthHandler, HTTPForcedBasicA
 from .structures import CaseInsensitiveDict
 from .packages.poster.encode import multipart_encode
 from .packages.poster.streaminghttp import register_openers, get_handlers
+from .utils import dict_from_cookiejar
 from .exceptions import RequestException, AuthenticationError, Timeout, URLRequired, InvalidMethod
 
 
@@ -187,6 +188,12 @@ class Request(object):
                 response.headers = CaseInsensitiveDict(getattr(resp.info(), 'dict', None))
                 response.read = resp.read
                 response.close = resp.close
+
+                if self.cookiejar:
+
+                    response.cookies = dict_from_cookiejar(self.cookiejar)
+
+
             except AttributeError:
                 pass
 
@@ -397,6 +404,7 @@ class Response(object):
         self.history = []
         #: The Request that created the Response.
         self.request = None
+        self.cookies = None
 
 
     def __repr__(self):
diff --git a/requests/utils.py b/requests/utils.py
new file mode 100644 (file)
index 0000000..f308f66
--- /dev/null
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+
+"""
+requests.utils
+~~~~~~~~~~~~~~
+
+This module provides utlity functions that are used within Requests
+that are also useful for external consumption.
+
+"""
+
+
+def dict_from_cookiejar(cookiejar):
+    """Returns a key/value dictoinary from a CookieJar."""
+
+    cookie_dict = {}
+
+    for _, cookies in cookiejar._cookies.items():
+        for _, cookies in cookies.items():
+            for cookie in cookies.values():
+                cookie_dict[cookie.name] = cookie.value
+
+    return cookie_dict
+