diff options
author | Maximilian Hils <git@maximilianhils.com> | 2015-09-11 15:31:25 +0200 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2015-09-11 15:31:25 +0200 |
commit | 02d80631dc1efcc1ef7d25b21c40c2327a32f49b (patch) | |
tree | fb04081aedb8e1cbd6529b95e46a659222f4f587 /libmproxy/console/flowview.py | |
parent | dd414e485212e3cab612a66d5d858c1a766ace04 (diff) | |
parent | 47602dc1a5949a41535bc562adb83279f33f0b73 (diff) | |
download | mitmproxy-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.py | 26 |
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( |