From 15e234558dc3ca2e7fb3a3ef73211994bf541584 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sat, 18 Aug 2012 17:51:34 +1200 Subject: Further content view cleaups. --- libmproxy/console/contentview.py | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'libmproxy/console') diff --git a/libmproxy/console/contentview.py b/libmproxy/console/contentview.py index 359b3d3c..4b934ed5 100644 --- a/libmproxy/console/contentview.py +++ b/libmproxy/console/contentview.py @@ -1,4 +1,4 @@ -import re, cStringIO, traceback +import re, cStringIO, traceback, json import urwid from PIL import Image from PIL.ExifTags import TAGS @@ -7,6 +7,13 @@ import common from .. import utils, encoding, flow from ..contrib import jsbeautifier, html2text +try: + import pyamf + from pyamf import remoting +except ImportError: # pragma nocover + pyamf = None + + VIEW_CUTOFF = 1024*50 @@ -230,9 +237,25 @@ class ViewAMF: prompt = ("amf", "f") content_types = ["application/x-amf"] def __call__(self, hdrs, content, limit): - s = utils.pretty_amf(content) - if s: - return "AMF", _view_text(s[:limit], len(s), limit) + envelope = remoting.decode(content) + if not envelope: + return None + + data = {} + data['amfVersion'] = envelope.amfVersion + for target, message in iter(envelope): + one_message = {} + + if hasattr(message, 'status'): + one_message['status'] = message.status + + if hasattr(message, 'target'): + one_message['target'] = message.target + + one_message['body'] = message.body + data[target] = one_message + s = json.dumps(data, indent=4) + return "AMF", _view_text(s[:limit], len(s), limit) class ViewJavaScript: @@ -307,12 +330,8 @@ views = [ ViewMultipart(), ViewImage(), ] -try: - import pyamf +if pyamf: views.append(ViewAMF()) -except ImportError: # pragma nocover - pass - content_types_map = {} for i in views: -- cgit v1.2.3