aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2011-01-28 12:07:27 +1300
committerAldo Cortesi <aldo@nullcube.com>2011-01-28 12:08:25 +1300
commitdfefe3cdda9acd94032e100d0507f9c73ed8cd36 (patch)
treeab6b24ac8efff50571d3ac7f5fc14a515e3ebcf6 /libmproxy
parent93ef691badcdaa1b7a5801eb40982c69f9b89534 (diff)
downloadmitmproxy-dfefe3cdda9acd94032e100d0507f9c73ed8cd36.tar.gz
mitmproxy-dfefe3cdda9acd94032e100d0507f9c73ed8cd36.tar.bz2
mitmproxy-dfefe3cdda9acd94032e100d0507f9c73ed8cd36.zip
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.
Diffstat (limited to 'libmproxy')
-rw-r--r--libmproxy/console.py13
-rw-r--r--libmproxy/utils.py5
2 files changed, 11 insertions, 7 deletions
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):