mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2025-01-30 14:58:38 +00:00
Add method to group pairs by cookies
This commit is contained in:
parent
99b32094d8
commit
a479c51465
@ -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
|
||||
|
@ -266,3 +266,23 @@ def test_is_expired():
|
||||
|
||||
assert not cookies.is_expired(CA([("Max-Age", "nan")]))
|
||||
assert not cookies.is_expired(CA([("Expires", "false")]))
|
||||
|
||||
|
||||
def test_group_cookies():
|
||||
def group(cookie):
|
||||
return cookies.group_cookies(cookies.parse_cookie_header(c))
|
||||
|
||||
c = "one=uno; foo=bar; foo=baz"
|
||||
assert len(group(c)) == 3
|
||||
|
||||
c = "one=uno; Path=/; foo=bar; Max-Age=0; foo=baz; expires=24-08-1993"
|
||||
assert len(group(c)) == 3
|
||||
|
||||
c = "one=uno;"
|
||||
assert len(group(c)) == 1
|
||||
|
||||
c = "one=uno; Path=/; Max-Age=0; Expires=24-08-1993"
|
||||
assert len(group(c)) == 1
|
||||
|
||||
c = "path=val; Path=/"
|
||||
assert group(c) == [("path", "val", cookies.CookieAttrs([("Path", "/")]))]
|
||||
|
Loading…
Reference in New Issue
Block a user