fix params support

This commit is contained in:
Kenneth Reitz
2012-12-17 05:23:22 -05:00
parent def20cdb0c
commit a776e7cb3e
2 changed files with 38 additions and 5 deletions
+4 -4
View File
@@ -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):
+34 -1
View File
@@ -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