This commit is contained in:
daftshady
2013-09-28 23:44:27 +09:00
parent 373166d833
commit d22eaf96e2
2 changed files with 20 additions and 8 deletions
+16
View File
@@ -404,3 +404,19 @@ def cookiejar_from_dict(cookie_dict, cookiejar=None):
for name in cookie_dict:
cookiejar.set_cookie(create_cookie(name, cookie_dict[name]))
return cookiejar
def merge_session_cookies(cookiejar, cookie_dict):
"""Merges cookie_dict with session CookieJar.
:param cookiejar: Should be session cookie.
:param cookie_dict: Dict of key/values to be merged.
"""
if cookiejar is None:
cookiejar = RequestsCookieJar()
if cookie_dict is not None:
for k in cookie_dict:
# Session should not be modified by request cookie.
if k not in [cookie.name for cookie in cookiejar]:
cookiejar.set_cookie(create_cookie(k, cookie_dict[k]))
+4 -8
View File
@@ -13,7 +13,7 @@ from collections import Mapping
from datetime import datetime
from .compat import cookielib, OrderedDict, urljoin, urlparse
from .cookies import cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar
from .cookies import cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar, merge_session_cookies
from .models import Request, PreparedRequest
from .hooks import default_hooks, dispatch_hook
from .utils import to_key_val_list, default_headers
@@ -146,13 +146,6 @@ class SessionRedirectMixin(object):
extract_cookies_to_jar(self.cookies, prepared_request, resp.raw)
# Restore original cookies in redirects response.
headers = resp.request.headers
try:
headers['Cookie'] = req.headers['Cookie']
except KeyError:
pass
i += 1
yield resp
@@ -329,6 +322,9 @@ class Session(SessionRedirectMixin):
)
prep = self.prepare_request(req)
# Add param cookies to session cookies
merge_session_cookies(self.cookies, cookies)
proxies = proxies or {}
# Gather clues from the surrounding environment.