From dfefe3cdda9acd94032e100d0507f9c73ed8cd36 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Fri, 28 Jan 2011 12:07:27 +1300 Subject: Make pretty-printing more robust. Also, since BeautifulSoup is so damn slow, print a statusbar message saying that we're calculating a pretty version of the response. Maybe I should add hangman or something, becuase on a 200k document this can take ages. --- libmproxy/console.py | 13 ++++++++----- libmproxy/utils.py | 5 +++-- 2 files changed, 11 insertions(+), 7 deletions(-) (limited to 'libmproxy') diff --git a/libmproxy/console.py b/libmproxy/console.py index e863816a..11f86744 100644 --- a/libmproxy/console.py +++ b/libmproxy/console.py @@ -244,14 +244,17 @@ class ConnectionView(WWrap): ) txt.append("\n\n") if conn.content: - if utils.isBin(conn.content): - self._view_binary(conn, txt) - elif self.state.viewmode == VIEW_BINARY: + if self.state.viewmode == VIEW_BINARY: self._view_binary(conn, txt) elif self.state.viewmode == VIEW_PRETTY: + self.master.statusbar.update("Calculating pretty mode...") self._view_pretty(conn, txt) + self.master.statusbar.update("") else: - self._view_normal(conn, txt) + if utils.isBin(conn.content): + self._view_binary(conn, txt) + else: + self._view_normal(conn, txt) return urwid.ListBox([urwid.Text(txt)]) def view_request(self): @@ -528,7 +531,6 @@ class StatusBar(WWrap): self.ab = ActionBar() self.ib = urwid.AttrWrap(urwid.Text(""), 'foot') self.w = urwid.Pile([self.ib, self.ab]) - self.redraw() def redraw(self): status = urwid.Columns([ @@ -541,6 +543,7 @@ class StatusBar(WWrap): align="right"), ]) self.ib.set_w(status) + self.master.drawscreen() def update(self, text): self.text = text diff --git a/libmproxy/utils.py b/libmproxy/utils.py index a02ac840..7b9d0e32 100644 --- a/libmproxy/utils.py +++ b/libmproxy/utils.py @@ -47,8 +47,9 @@ def prettybody(s): Return a list of pretty-printed lines. """ s = BeautifulSoup.BeautifulStoneSoup(s) - s = s.prettify() - return s.split("\n") + s = s.prettify().strip() + parts = s.split("\n") + return [repr(i)[1:-1] for i in parts] def hexdump(s): -- cgit v1.2.3