From: Kenneth Reitz Date: Mon, 17 Dec 2012 10:23:22 +0000 (-0500) Subject: fix params support X-Git-Tag: v1.0.0~27 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a776e7cb3e57e56a2d9974b730e6f5e7776751a4;p=services%2Fpython-requests.git fix params support --- diff --git a/requests/models.py b/requests/models.py index 8d56456..741959a 100644 --- a/requests/models.py +++ b/requests/models.py @@ -257,7 +257,7 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): pass # Support for unicode domain names and paths. - scheme, netloc, path, params, query, fragment = urlparse(url) + scheme, netloc, path, _params, query, fragment = urlparse(url) if not scheme: raise MissingSchema("Invalid URL %r: No schema supplied" % url) @@ -278,8 +278,8 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): netloc = netloc.encode('utf-8') if isinstance(path, str): path = path.encode('utf-8') - if isinstance(params, str): - params = params.encode('utf-8') + if isinstance(_params, str): + _params = _params.encode('utf-8') if isinstance(query, str): query = query.encode('utf-8') if isinstance(fragment, str): @@ -292,7 +292,7 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): else: query = enc_params - url = requote_uri(urlunparse([scheme, netloc, path, params, query, fragment])) + url = requote_uri(urlunparse([scheme, netloc, path, _params, query, fragment])) self.url = url def prepare_headers(self, headers): diff --git a/requests/sessions.py b/requests/sessions.py index b7526c4..78b0da3 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -186,7 +186,7 @@ class Session(SessionRedirectMixin): params=None, data=None, headers=None, - cookies=None, + cookies=None or {}, files=None, auth=None, timeout=None, @@ -198,6 +198,39 @@ class Session(SessionRedirectMixin): verify=None, cert=None): + + # merge session cookies into passed-in ones + dead_cookies = None + # passed-in cookies must become a CookieJar: + if not isinstance(cookies, cookielib.CookieJar): + cookies = cookiejar_from_dict(cookies) + # support unsetting cookies that have been passed in with None values + # this is only meaningful when `cookies` is a dict --- + # for a real CookieJar, the client should use session.cookies.clear() + if cookies is not None: + dead_cookies = [name for name in cookies if cookies[name] is None] + # merge the session's cookies into the passed-in cookies: + for cookie in self.cookies: + cookies.set_cookie(cookie) + # remove the unset cookies from the jar we'll be using with the current request + # (but not from the session's own store of cookies): + if dead_cookies is not None: + for name in dead_cookies: + remove_cookie_by_name(cookies, name) + + # Merge local kwargs with session kwargs. + for attr in self.__attrs__: + # we already merged cookies: + if attr == 'cookies': + continue + + session_val = getattr(self, attr, None) + local_val = locals().get(attr) + locals()[attr] = merge_kwargs(local_val, session_val) + + + headers = merge_kwargs(headers, self.headers) + req = Request() req.method = method req.url = url