diff options
author | Rajat Gupta <35985127+rjt-gupta@users.noreply.github.com> | 2018-12-04 02:35:59 +0530 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2018-12-03 22:05:59 +0100 |
commit | db658b12edf9a44e40ca79209a652e839ffa78dd (patch) | |
tree | 5b7147e54ee358aa442e0bb5bcd5db34abc2ca89 /mitmproxy | |
parent | ce28721458c8cc71de86513a5110676e9763041b (diff) | |
download | mitmproxy-db658b12edf9a44e40ca79209a652e839ffa78dd.tar.gz mitmproxy-db658b12edf9a44e40ca79209a652e839ffa78dd.tar.bz2 mitmproxy-db658b12edf9a44e40ca79209a652e839ffa78dd.zip |
fix query array
fixes #3072
closes #3254
Diffstat (limited to 'mitmproxy')
-rw-r--r-- | mitmproxy/contentviews/base.py | 36 | ||||
-rw-r--r-- | mitmproxy/contentviews/query.py | 2 | ||||
-rw-r--r-- | mitmproxy/contentviews/urlencoded.py | 3 |
3 files changed, 30 insertions, 11 deletions
diff --git a/mitmproxy/contentviews/base.py b/mitmproxy/contentviews/base.py index e4ccf66f..6072dfb7 100644 --- a/mitmproxy/contentviews/base.py +++ b/mitmproxy/contentviews/base.py @@ -35,32 +35,52 @@ class View: raise NotImplementedError() # pragma: no cover -def format_dict( - d: typing.Mapping[TTextType, TTextType] -) -> typing.Iterator[TViewLine]: +def format_pairs( + items: typing.Iterable[typing.Tuple[TTextType, TTextType]] +)-> typing.Iterator[TViewLine]: + """ - Helper function that transforms the given dictionary into a list of + Helper function that accepts a list of (k,v) pairs into a list of [ - ("key", key ) + ("key", key ) ("value", value) ] - entries, where key is padded to a uniform width. + where key is padded to a uniform width """ - max_key_len = max((len(k) for k in d.keys()), default=0) + max_key_len = max((len(k[0]) for k in items), default=0) max_key_len = min((max_key_len, KEY_MAX), default=0) - for key, value in d.items(): + + for key, value in items: if isinstance(key, bytes): + key += b":" else: key += ":" + key = key.ljust(max_key_len + 2) + yield [ ("header", key), ("text", value) ] +def format_dict( + d: typing.Mapping[TTextType, TTextType] +) -> typing.Iterator[TViewLine]: + """ + Helper function that transforms the given dictionary into a list of + [ + ("key", key ) + ("value", value) + ] + entries, where key is padded to a uniform width. + """ + + return format_pairs(d.items()) + + def format_text(text: TTextType) -> typing.Iterator[TViewLine]: """ Helper function that transforms bytes into the view output format. diff --git a/mitmproxy/contentviews/query.py b/mitmproxy/contentviews/query.py index 4896624b..0f74ea2f 100644 --- a/mitmproxy/contentviews/query.py +++ b/mitmproxy/contentviews/query.py @@ -9,6 +9,6 @@ class ViewQuery(base.View): def __call__(self, data, **metadata): query = metadata.get("query") if query: - return "Query", base.format_dict(query) + return "Query", base.format_pairs(query.items(multi=True)) else: return "Query", base.format_text("") diff --git a/mitmproxy/contentviews/urlencoded.py b/mitmproxy/contentviews/urlencoded.py index 371a160e..e35bbdb7 100644 --- a/mitmproxy/contentviews/urlencoded.py +++ b/mitmproxy/contentviews/urlencoded.py @@ -1,5 +1,4 @@ from mitmproxy.net.http import url -from mitmproxy.coretypes import multidict from . import base @@ -13,4 +12,4 @@ class ViewURLEncoded(base.View): except ValueError: return None d = url.decode(data) - return "URLEncoded form", base.format_dict(multidict.MultiDict(d)) + return "URLEncoded form", base.format_pairs(d) |