From: daftshady Date: Tue, 5 Nov 2013 07:09:49 +0000 (+0900) Subject: added new method 'merge_cookies' and use it when merging session cookies with param... X-Git-Tag: v2.1.0~11^2~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e40c1637c915e112fabaffb39fcd73beed56ff4b;p=services%2Fpython-requests.git added new method 'merge_cookies' and use it when merging session cookies with param cookies. --- diff --git a/requests/cookies.py b/requests/cookies.py index a4140ad..45c4685 100644 --- a/requests/cookies.py +++ b/requests/cookies.py @@ -421,3 +421,22 @@ def cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True): cookiejar.set_cookie(create_cookie(name, cookie_dict[name])) return cookiejar + + +def merge_cookies(cookiejar, cookies): + """Add cookies to cookiejar and returns a merged CookieJar. + + :param cookiejar: CookieJar object to add the cookies to. + :param cookies: Dictionary or CookieJar object to be added. + """ + if not isinstance(cookiejar, cookielib.CookieJar): + raise ValueError('You can only merge into CookieJar') + + if isinstance(cookies, dict): + cookiejar.update( + cookiejar_from_dict( + cookies, cookiejar=cookiejar, overwrite=False)) + elif isinstance(cookies, cookielib.CookieJar): + cookiejar.update(cookies) + + return cookiejar diff --git a/requests/sessions.py b/requests/sessions.py index a5cb897..c8d8c71 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -12,8 +12,9 @@ import os from collections import Mapping from datetime import datetime -from .compat import cookielib, OrderedDict, urljoin, urlparse, builtin_str -from .cookies import cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar +from .compat import cookielib, OrderedDict, urljoin, urlparse, urlunparse, builtin_str +from .cookies import ( + cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar, merge_cookies) from .models import Request, PreparedRequest from .hooks import default_hooks, dispatch_hook from .utils import to_key_val_list, default_headers @@ -330,11 +331,7 @@ class Session(SessionRedirectMixin): prep = self.prepare_request(req) # Add param cookies to session cookies - if isinstance(cookies, dict): - self.cookies = cookiejar_from_dict( - cookies, cookiejar=self.cookies, overwrite=False) - elif isinstance(cookies, cookielib.CookieJar): - self.cookies.update(cookies) + self.cookies = merge_cookies(self.cookies, cookies) proxies = proxies or {}