From cdab4fabf448f287f6f537265aa23ac06a080599 Mon Sep 17 00:00:00 2001 From: Flavio Curella Date: Mon, 1 Jul 2013 13:49:43 -0500 Subject: [PATCH 1/3] unquote double-quotes cookie values --- requests/cookies.py | 5 +++++ test_requests.py | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/requests/cookies.py b/requests/cookies.py index d62f0cd1..a12feb56 100644 --- a/requests/cookies.py +++ b/requests/cookies.py @@ -259,6 +259,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.strip('\\"') + 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): diff --git a/test_requests.py b/test_requests.py index 7ad10ee9..b0e99c77 100755 --- a/test_requests.py +++ b/test_requests.py @@ -170,6 +170,11 @@ class RequestsTestCase(unittest.TestCase): ) assert 'foo' not in s.cookies + def test_cookie_quote_wrapped(self): + s = requests.session() + s.get(httpbin('cookies/set?foo="bar:baz"')) + self.assertTrue(s.cookies['foo'] == 'bar:baz') + def test_request_cookie_overrides_session_cookie(self): s = requests.session() s.cookies['foo'] = 'bar' From a8cf5b85027e523c54d3d496ee5467eac90555bd Mon Sep 17 00:00:00 2001 From: Flavio Curella Date: Mon, 1 Jul 2013 15:48:48 -0500 Subject: [PATCH 2/3] keep the double quotes, but don't escape them --- requests/cookies.py | 2 +- test_requests.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/requests/cookies.py b/requests/cookies.py index a12feb56..d1e5d75b 100644 --- a/requests/cookies.py +++ b/requests/cookies.py @@ -261,7 +261,7 @@ class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping): def set_cookie(self, cookie, *args, **kwargs): if cookie.value.startswith('"') and cookie.value.endswith('"'): - cookie.value = cookie.value.strip('\\"') + cookie.value = cookie.value.replace('\\"', '') return super(RequestsCookieJar, self).set_cookie(cookie, *args, **kwargs) def update(self, other): diff --git a/test_requests.py b/test_requests.py index b0e99c77..e22b6ae3 100755 --- a/test_requests.py +++ b/test_requests.py @@ -173,7 +173,7 @@ class RequestsTestCase(unittest.TestCase): def test_cookie_quote_wrapped(self): s = requests.session() s.get(httpbin('cookies/set?foo="bar:baz"')) - self.assertTrue(s.cookies['foo'] == 'bar:baz') + self.assertTrue(s.cookies['foo'] == '"bar:baz"') def test_request_cookie_overrides_session_cookie(self): s = requests.session() From 7da16c584ae6ab9c87d4aeea857278ee886760f0 Mon Sep 17 00:00:00 2001 From: Flavio Curella Date: Mon, 1 Jul 2013 15:54:59 -0500 Subject: [PATCH 3/3] Added myself to AUTHORS --- AUTHORS.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.rst b/AUTHORS.rst index 96a3d49f..6267ddf0 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -131,3 +131,4 @@ Patches and Suggestions - Dave Shawley - James Clarke (jam) - Kevin Burke +- Flavio Curella