diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2015-04-14 13:45:38 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2015-04-14 13:45:38 +1200 |
commit | e17eacd8d77c78daa88d8f89ace990463378d98d (patch) | |
tree | 108943aae84446545c519826b965e0b557a2abc2 /libmproxy | |
parent | 4652887786db3da5facfb388ab0b673d67064ae5 (diff) | |
download | mitmproxy-e17eacd8d77c78daa88d8f89ace990463378d98d.tar.gz mitmproxy-e17eacd8d77c78daa88d8f89ace990463378d98d.tar.bz2 mitmproxy-e17eacd8d77c78daa88d8f89ace990463378d98d.zip |
New get_cookie and set_cookie implementations for HTTPRequest
Diffstat (limited to 'libmproxy')
-rw-r--r-- | libmproxy/protocol/http.py | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/libmproxy/protocol/http.py b/libmproxy/protocol/http.py index 94077e42..cd9458f2 100644 --- a/libmproxy/protocol/http.py +++ b/libmproxy/protocol/http.py @@ -6,7 +6,7 @@ import time import copy from email.utils import parsedate_tz, formatdate, mktime_tz import threading -from netlib import http, tcp, http_status +from netlib import http, tcp, http_status, http_cookies import netlib.utils from netlib import odict from .tcp import TCPHandler @@ -670,15 +670,22 @@ class HTTPRequest(HTTPMessage): self.scheme, self.host, self.port, self.path = parts def get_cookies(self): - cookie_headers = self.headers.get("cookie") - if not cookie_headers: - return None + """ - cookies = [] - for header in cookie_headers: - pairs = [pair.partition("=") for pair in header.split(';')] - cookies.extend((pair[0], (pair[2], {})) for pair in pairs) - return dict(cookies) + Returns a possibly empty netlib.odict.ODict object. + """ + ret = odict.ODict() + for i in self.headers["cookie"]: + ret.extend(http_cookies.parse_cookie_header(i)) + return ret + + def set_cookies(self, odict): + """ + Takes an netlib.odict.ODict object. Over-writes any existing Cookie + headers. + """ + v = http_cookies.format_cookie_header(odict) + self.headers["Cookie"] = [v] def replace(self, pattern, repl, *args, **kwargs): """ |