import urllib
import zlib
+from Cookie import SimpleCookie
from urlparse import urlparse, urlunparse, urljoin
from .packages import urllib3
# Make headers case-insensitive.
response.headers = CaseInsensitiveDict(getattr(resp, 'headers', None))
+ # Start off with our local cookies.
+ cookies = self.cookies or dict()
+
+ # Add new cookies from the server.
+ if 'set-cookie' in response.headers:
+ cookie_header = response.headers['set-cookie']
+
+ c = SimpleCookie()
+ c.load(cookie_header)
+
+ for k,v in c.items():
+ cookies.update({k: v.value})
+
+ # Save cookies in Response.
+ response.cookies = cookies
+
# Save original resopnse for later.
response.raw = resp
# Build the final URL.
url = build_url(self.url, self.params)
+ # Nottin' on you.
body = None
content_type = None
# Part of a connection pool, so no fancy stuff. Sorry!
do_block = True
+ if self.cookies:
+ # Skip if 'cookie' header is explicitly set.
+ if 'cookie' not in self.headers:
+
+ # Simple cookie with our dict.
+ c = SimpleCookie()
+ c.load(self.cookies)
+
+ # Turn it into a header.
+ cookie_header = c.output(header='').strip()
+
+ # Attach Cookie header to request.
+ self.headers['Cookie'] = cookie_header
+
# Create the connection.
r = connection.urlopen(
method=self.method,
self._pools = pools
# Extract cookies.
- # if self.cookiejar is not None:
+ 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:
self._build_response(r)
self.response.ok = True
-
self.sent = self.response.ok
return self.sent
return ''.join(collector)
-def dict_from_cookiejar(cj):
+def dict_from_cookiejar(cookies):
"""Returns a key/value dictionary from a CookieJar.
:param cj: CookieJar object to extract cookies from.
cookie_dict = {}
- for _, cookies in cj._cookies.items():
+ for _, cookies in cookies.items():
for _, cookies in cookies.items():
for cookie in cookies.values():
cookie_dict[cookie.name] = cookie.value