aboutsummaryrefslogtreecommitdiffstats
path: root/netlib
diff options
context:
space:
mode:
authorShadab Zafar <dufferzafar0@gmail.com>2016-08-04 14:16:35 +0530
committerShadab Zafar <dufferzafar0@gmail.com>2016-08-15 12:00:23 +0530
commita479c51465deae7be98ddba07ca2138fe6014d77 (patch)
tree895a5de63fa78edb568bc9de82a42a88874dd230 /netlib
parent99b32094d81054d7a80adb7d2a032a056465d945 (diff)
downloadmitmproxy-a479c51465deae7be98ddba07ca2138fe6014d77.tar.gz
mitmproxy-a479c51465deae7be98ddba07ca2138fe6014d77.tar.bz2
mitmproxy-a479c51465deae7be98ddba07ca2138fe6014d77.zip
Add method to group pairs by cookies
Diffstat (limited to 'netlib')
-rw-r--r--netlib/http/cookies.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/netlib/http/cookies.py b/netlib/http/cookies.py
index dd0af99c..389dbb26 100644
--- a/netlib/http/cookies.py
+++ b/netlib/http/cookies.py
@@ -26,6 +26,12 @@ variants. Serialization follows RFC6265.
http://tools.ietf.org/html/rfc2965
"""
+_cookie_params = set((
+ 'expires', 'path', 'comment', 'max-age',
+ 'secure', 'httponly', 'version',
+))
+
+
# TODO: Disallow LHS-only Cookie values
@@ -287,3 +293,28 @@ def is_expired(cookie_attrs):
pass
return expires or max_age
+
+
+def group_cookies(pairs):
+ """
+ Converts a list of pairs to a (name, value, attrs) for each cookie.
+ """
+
+ if not pairs:
+ return []
+
+ cookie_list = []
+
+ # First pair is always a new cookie
+ name, value = pairs[0]
+ attrs = []
+
+ for k, v in pairs[1:]:
+ if k.lower() in _cookie_params:
+ attrs.append((k, v))
+ else:
+ cookie_list.append((name, value, CookieAttrs(attrs)))
+ name, value, attrs = k, v, []
+
+ cookie_list.append((name, value, CookieAttrs(attrs)))
+ return cookie_list