diff options
Diffstat (limited to 'libmproxy/console/common.py')
-rw-r--r-- | libmproxy/console/common.py | 56 |
1 files changed, 24 insertions, 32 deletions
diff --git a/libmproxy/console/common.py b/libmproxy/console/common.py index fa21c93e..3a708c7c 100644 --- a/libmproxy/console/common.py +++ b/libmproxy/console/common.py @@ -1,7 +1,9 @@ from __future__ import absolute_import + import urwid import urwid.util import os + from .. import utils from ..protocol.http import CONTENT_MISSING, decoded @@ -41,6 +43,8 @@ def highlight_key(s, k): KEY_MAX = 30 + + def format_keyvals(lst, key="key", val="text", indent=0): """ Format a list of (key, value) tuples. @@ -103,10 +107,8 @@ else: SYMBOL_RETURN = u"<-" - def raw_format_flow(f, focus, extended, padding): f = dict(f) - pile = [] req = [] if extended: @@ -122,7 +124,7 @@ def raw_format_flow(f, focus, extended, padding): req.append(fcol(SYMBOL_REPLAY, "replay")) req.append(fcol(f["req_method"], "method")) - preamble = sum(i[1] for i in req) + len(req) -1 + preamble = sum(i[1] for i in req) + len(req) - 1 if f["intercepted"] and not f["acked"]: uc = "intercept" @@ -284,15 +286,16 @@ def ask_copy_part(scope, flow, master, state): def ask_save_body(part, master, state, flow): """ - Save either the request or the response body to disk. - part can either be "q" (request), "s" (response) or None (ask user if necessary). + Save either the request or the response body to disk. part can either be + "q" (request), "s" (response) or None (ask user if necessary). """ request_has_content = flow.request and flow.request.content response_has_content = flow.response and flow.response.content if part is None: - # We first need to determine whether we want to save the request or the response content. + # We first need to determine whether we want to save the request or the + # response content. if request_has_content and response_has_content: master.prompt_onekey( "Save", @@ -311,9 +314,19 @@ def ask_save_body(part, master, state, flow): ask_save_body("q", master, state, flow) elif part == "q" and request_has_content: - ask_save_path("Save request content: ", flow.request.get_decoded_content(), master, state) + ask_save_path( + "Save request content: ", + flow.request.get_decoded_content(), + master, + state + ) elif part == "s" and response_has_content: - ask_save_path("Save response content: ", flow.response.get_decoded_content(), master, state) + ask_save_path( + "Save response content: ", + flow.response.get_decoded_content(), + master, + state + ) else: master.statusbar.message("No content to save.") @@ -348,7 +361,6 @@ def format_flow(f, focus, extended=False, hostheader=False, padding=2): duration = 0 if f.response.timestamp_end and f.request.timestamp_start: duration = f.response.timestamp_end - f.request.timestamp_start - size = f.response.size() roundtrip = utils.pretty_duration(duration) d.update(dict( @@ -362,26 +374,6 @@ def format_flow(f, focus, extended=False, hostheader=False, padding=2): d["resp_ctype"] = t[0].split(";")[0] else: d["resp_ctype"] = "" - return flowcache.format_flow(tuple(sorted(d.items())), focus, extended, padding) - - -def int_version(v): - SIG = 3 - v = urwid.__version__.split("-")[0].split(".") - x = 0 - for i in range(min(SIG, len(v))): - x += int(v[i]) * 10**(SIG-i) - return x - - -# We have to do this to be portable over 0.9.8 and 0.9.9 If compatibility -# becomes a pain to maintain, we'll just mandate 0.9.9 or newer. -class WWrap(urwid.WidgetWrap): - if int_version(urwid.__version__) >= 990: - def set_w(self, x): - self._w = x - def get_w(self): - return self._w - w = property(get_w, set_w) - - + return flowcache.format_flow( + tuple(sorted(d.items())), focus, extended, padding + ) |