| Index: third_party/requests/cookies.py
|
| diff --git a/third_party/requests/cookies.py b/third_party/requests/cookies.py
|
| index d759d0a977f5f7c5c7d2c5fcb2e51543f868cf02..f3ac64f0a3aabe3bf778dbc64d23868f8bf416e9 100644
|
| --- a/third_party/requests/cookies.py
|
| +++ b/third_party/requests/cookies.py
|
| @@ -6,6 +6,7 @@ Compatibility code to be able to use `cookielib.CookieJar` with requests.
|
| requests.utils imports from here, so be careful with imports.
|
| """
|
|
|
| +import time
|
| import collections
|
| from .compat import cookielib, urlparse, Morsel
|
|
|
| @@ -73,6 +74,10 @@ class MockRequest(object):
|
| def origin_req_host(self):
|
| return self.get_origin_req_host()
|
|
|
| + @property
|
| + def host(self):
|
| + return self.get_host()
|
| +
|
|
|
| class MockResponse(object):
|
| """Wraps a `httplib.HTTPMessage` to mimic a `urllib.addinfourl`.
|
| @@ -102,6 +107,9 @@ def extract_cookies_to_jar(jar, request, response):
|
| :param request: our own requests.Request object
|
| :param response: urllib3.HTTPResponse object
|
| """
|
| + if not (hasattr(response, '_original_response') and
|
| + response._original_response):
|
| + return
|
| # the _original_response field is the wrapped httplib.HTTPResponse object,
|
| req = MockRequest(request)
|
| # pull out the HTTPMessage with the headers and put it in the mock:
|
| @@ -258,6 +266,11 @@ class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping):
|
| """Deletes a cookie given a name. Wraps cookielib.CookieJar's remove_cookie_by_name()."""
|
| remove_cookie_by_name(self, name)
|
|
|
| + def set_cookie(self, cookie, *args, **kwargs):
|
| + if cookie.value.startswith('"') and cookie.value.endswith('"'):
|
| + cookie.value = cookie.value.replace('\\"', '')
|
| + return super(RequestsCookieJar, self).set_cookie(cookie, *args, **kwargs)
|
| +
|
| def update(self, other):
|
| """Updates this jar with cookies from another CookieJar or dict-like"""
|
| if isinstance(other, cookielib.CookieJar):
|
| @@ -354,19 +367,23 @@ def create_cookie(name, value, **kwargs):
|
|
|
| def morsel_to_cookie(morsel):
|
| """Convert a Morsel object into a Cookie containing the one k/v pair."""
|
| + expires = None
|
| + if morsel["max-age"]:
|
| + expires = time.time() + morsel["max-age"]
|
| + elif morsel['expires']:
|
| + expires = morsel['expires']
|
| + if type(expires) == type(""):
|
| + time_template = "%a, %d-%b-%Y %H:%M:%S GMT"
|
| + expires = time.mktime(time.strptime(expires, time_template))
|
| c = create_cookie(
|
| name=morsel.key,
|
| value=morsel.value,
|
| version=morsel['version'] or 0,
|
| port=None,
|
| - port_specified=False,
|
| domain=morsel['domain'],
|
| - domain_specified=bool(morsel['domain']),
|
| - domain_initial_dot=morsel['domain'].startswith('.'),
|
| path=morsel['path'],
|
| - path_specified=bool(morsel['path']),
|
| secure=bool(morsel['secure']),
|
| - expires=morsel['max-age'] or morsel['expires'],
|
| + expires=expires,
|
| discard=False,
|
| comment=morsel['comment'],
|
| comment_url=bool(morsel['comment']),
|
|
|