aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/console/flowview.py
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2015-09-11 15:31:25 +0200
committerMaximilian Hils <git@maximilianhils.com>2015-09-11 15:31:25 +0200
commit02d80631dc1efcc1ef7d25b21c40c2327a32f49b (patch)
treefb04081aedb8e1cbd6529b95e46a659222f4f587 /libmproxy/console/flowview.py
parentdd414e485212e3cab612a66d5d858c1a766ace04 (diff)
parent47602dc1a5949a41535bc562adb83279f33f0b73 (diff)
downloadmitmproxy-02d80631dc1efcc1ef7d25b21c40c2327a32f49b.tar.gz
mitmproxy-02d80631dc1efcc1ef7d25b21c40c2327a32f49b.tar.bz2
mitmproxy-02d80631dc1efcc1ef7d25b21c40c2327a32f49b.zip
Merge pull request #764 from mitmproxy/contentviews
Extract Content Views from Console
Diffstat (limited to 'libmproxy/console/flowview.py')
-rw-r--r--libmproxy/console/flowview.py26
1 files changed, 21 insertions, 5 deletions
diff --git a/libmproxy/console/flowview.py b/libmproxy/console/flowview.py
index 19917555..c0720652 100644
--- a/libmproxy/console/flowview.py
+++ b/libmproxy/console/flowview.py
@@ -1,15 +1,17 @@
from __future__ import absolute_import
import os
import sys
+import traceback
import urwid
from netlib import odict
from netlib.http.semantics import CONTENT_MISSING, Headers
-from . import common, grideditor, contentview, signals, searchable, tabs
+from . import common, grideditor, signals, searchable, tabs
from . import flowdetailview
-from .. import utils, controller
+from .. import utils, controller, contentview
from ..models import HTTPRequest, HTTPResponse, decoded
+from ..exceptions import ContentViewException
class SearchError(Exception):
@@ -179,15 +181,29 @@ class FlowView(tabs.Tabs):
limit = sys.maxsize
else:
limit = contentview.VIEW_CUTOFF
- description, text_objects = cache.get(
- contentview.get_content_view,
+ return cache.get(
+ self._get_content_view,
viewmode,
conn.headers,
conn.content,
limit,
isinstance(conn, HTTPRequest)
)
- return (description, text_objects)
+
+ def _get_content_view(self, viewmode, headers, content, limit, is_request):
+ try:
+ description, lines = contentview.get_content_view(
+ viewmode, headers, content, limit, is_request
+ )
+ except ContentViewException:
+ s = "Content viewer failed: \n" + traceback.format_exc()
+ signals.add_event(s, "error")
+ description, lines = contentview.get_content_view(
+ viewmode, headers, content, limit, is_request
+ )
+ description = description.replace("Raw", "Couldn't parse: falling back to Raw")
+ text_objects = [urwid.Text(l) for l in lines]
+ return description, text_objects
def viewmode_get(self):
override = self.state.get_flow_setting(