console: "v" to reverse flow order

This commit is contained in:
Aldo Cortesi
2016-10-30 17:57:43 +13:00
parent a67a591893
commit f08b57fb9b
4 changed files with 23 additions and 6 deletions

View File

@@ -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)

View File

@@ -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.")

View File

@@ -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)

View File

@@ -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)