requests cookies behaving

This commit is contained in:
Kenneth Reitz
2011-09-26 01:57:31 -04:00
parent 14bd9ebb45
commit 5c132c98ca
2 changed files with 20 additions and 13 deletions
+2 -10
View 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:
+18 -3
View 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
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