From: Chase Sterling Date: Thu, 7 Nov 2013 02:52:21 +0000 (-0500) Subject: Store the request cookiejar in PreparedRequest.cookies fix #1728 X-Git-Tag: v2.1.0~1^2~2^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8bfe0d873f382ec92e4000084bb7e00505bc29b2;p=services%2Fpython-requests.git Store the request cookiejar in PreparedRequest.cookies fix #1728 Conflicts: requests/sessions.py --- diff --git a/requests/auth.py b/requests/auth.py index f87087d..ba979b5 100644 --- a/requests/auth.py +++ b/requests/auth.py @@ -16,6 +16,7 @@ import logging from base64 import b64encode from .compat import urlparse, str +from .cookies import extract_cookies_to_jar from .utils import parse_dict_header log = logging.getLogger(__name__) @@ -169,7 +170,8 @@ class HTTPDigestAuth(AuthBase): r.content r.raw.release_conn() prep = r.request.copy() - prep.prepare_cookies(r.cookies) + extract_cookies_to_jar(prep.cookies, r.request, r.raw) + prep.prepare_cookies(prep.cookies) prep.headers['Authorization'] = self.build_digest_header( prep.method, prep.url) diff --git a/requests/models.py b/requests/models.py index c68f911..31d120e 100644 --- a/requests/models.py +++ b/requests/models.py @@ -270,6 +270,9 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): self.url = None #: dictionary of HTTP headers. self.headers = None + #: The `CookieJar` used to create the Cookie header will be stored here + #: after prepare_cookies is called + self.cookies = None #: request body to send to the server. self.body = None #: dictionary of callback hooks, for internal usage. @@ -299,6 +302,7 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): p.method = self.method p.url = self.url p.headers = self.headers.copy() + p.cookies = self.cookies.copy() p.body = self.body p.hooks = self.hooks return p @@ -474,14 +478,13 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): """Prepares the given HTTP cookie data.""" if isinstance(cookies, cookielib.CookieJar): - cookies = cookies + self.cookies = cookies else: - cookies = cookiejar_from_dict(cookies) + self.cookies = cookiejar_from_dict(cookies) - if 'cookie' not in self.headers: - cookie_header = get_cookie_header(cookies, self) - if cookie_header is not None: - self.headers['Cookie'] = cookie_header + cookie_header = get_cookie_header(self.cookies, self) + if cookie_header is not None: + self.headers['Cookie'] = cookie_header def prepare_hooks(self, hooks): """Prepares the given hooks.""" diff --git a/requests/sessions.py b/requests/sessions.py index cdce648..52adb7a 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -153,7 +153,8 @@ class SessionRedirectMixin(object): except KeyError: pass - prepared_request.prepare_cookies(self.cookies) + extract_cookies_to_jar(prepared_request.cookies, prepared_request, resp.raw) + prepared_request.prepare_cookies(prepared_request.cookies) resp = self.send( prepared_request, @@ -345,9 +346,6 @@ class Session(SessionRedirectMixin): ) prep = self.prepare_request(req) - # Add param cookies to session cookies - self.cookies = merge_cookies(self.cookies, cookies) - proxies = proxies or {} # Gather clues from the surrounding environment.