From f08b57fb9bd03f2abf1a4f11d0d01ffc50e3582c Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 30 Oct 2016 17:57:43 +1300 Subject: console: "v" to reverse flow order --- mitmproxy/addons/view.py | 6 ++++-- mitmproxy/tools/console/flowlist.py | 4 ++++ mitmproxy/tools/console/master.py | 2 ++ test/mitmproxy/addons/test_view.py | 17 +++++++++++++---- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/mitmproxy/addons/view.py b/mitmproxy/addons/view.py index 8bbbf0f1..b4ba2315 100644 --- a/mitmproxy/addons/view.py +++ b/mitmproxy/addons/view.py @@ -129,8 +129,8 @@ class View(collections.Sequence): self.show_marked = not self.show_marked self._refilter() - def toggle_reversed(self): - self.order_reversed = not self.order_reversed + def set_reversed(self, value: bool): + self.order_reversed = value self.sig_refresh.send(self) def set_order(self, order_key: typing.Callable): @@ -220,6 +220,8 @@ class View(collections.Sequence): raise exceptions.OptionsError( "Unknown flow order: %s" % opts.order ) + if "order_reversed" in updated: + self.set_reversed(opts.order_reversed) def request(self, f): self.add(f) diff --git a/mitmproxy/tools/console/flowlist.py b/mitmproxy/tools/console/flowlist.py index bc4392ec..a0a3dc94 100644 --- a/mitmproxy/tools/console/flowlist.py +++ b/mitmproxy/tools/console/flowlist.py @@ -29,6 +29,7 @@ def _mkhelp(): ("r", "replay request"), ("S", "server replay request/s"), ("U", "unmark all marked flows"), + ("v", "reverse flow order"), ("V", "revert changes to request"), ("w", "save flows "), ("W", "stream flows to file"), @@ -219,6 +220,9 @@ class FlowItem(urwid.WidgetWrap): for f in self.master.view: f.marked = False signals.flowlist_change.send(self) + elif key == "v": + val = not self.master.options.order_reversed + self.master.options.order_reversed = val elif key == "V": if not self.flow.modified(): signals.status_message.send(message="Flow not modified.") diff --git a/mitmproxy/tools/console/master.py b/mitmproxy/tools/console/master.py index 8109888c..932dc151 100644 --- a/mitmproxy/tools/console/master.py +++ b/mitmproxy/tools/console/master.py @@ -52,6 +52,7 @@ class Options(mitmproxy.options.Options): no_mouse: bool = False, follow_focus: bool = False, order: Optional[str] = None, + order_reversed: bool = False, **kwargs ): self.eventlog = eventlog @@ -63,6 +64,7 @@ class Options(mitmproxy.options.Options): self.no_mouse = no_mouse self.follow_focus = follow_focus self.order = order + self.order_reversed = order_reversed super().__init__(**kwargs) diff --git a/test/mitmproxy/addons/test_view.py b/test/mitmproxy/addons/test_view.py index a05dc60c..750e8469 100644 --- a/test/mitmproxy/addons/test_view.py +++ b/test/mitmproxy/addons/test_view.py @@ -77,13 +77,13 @@ def test_order(): v.set_order(view.key_request_method) assert [i.request.method for i in v] == ["GET", "GET", "PUT", "PUT"] - v.toggle_reversed() + v.set_reversed(True) assert [i.request.method for i in v] == ["PUT", "PUT", "GET", "GET"] v.set_order(view.key_request_start) assert [i.request.timestamp_start for i in v] == [4, 3, 2, 1] - v.toggle_reversed() + v.set_reversed(False) assert [i.request.timestamp_start for i in v] == [1, 2, 3, 4] @@ -92,7 +92,7 @@ def test_reversed(): v.request(tft(start=1)) v.request(tft(start=2)) v.request(tft(start=3)) - v.toggle_reversed() + v.set_reversed(True) assert v[0].request.timestamp_start == 3 assert v[-1].request.timestamp_start == 1 @@ -266,9 +266,16 @@ def test_settings(): class Options(options.Options): - def __init__(self, *, filter=None, order=None, **kwargs): + def __init__( + self, *, + filter=None, + order=None, + order_reversed=False, + **kwargs + ): self.filter = filter self.order = order + self.order_reversed = order_reversed super().__init__(**kwargs) @@ -280,3 +287,5 @@ def test_configure(): tctx.configure(v, order="method") tutils.raises("unknown flow order", tctx.configure, v, order="no") + + tctx.configure(v, order_reversed=True) -- cgit v1.2.3