From cb7da1ee44b19c15036459c2c9fdb2a34a3565f2 Mon Sep 17 00:00:00 2001 From: Clemens Date: Fri, 29 Jul 2016 15:37:41 +0200 Subject: moved getlines to contentviews --- mitmproxy/contentviews.py | 32 ++++++++++++++++++++++++++++++++ mitmproxy/web/app.py | 33 +-------------------------------- 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/mitmproxy/contentviews.py b/mitmproxy/contentviews.py index e155bc01..88d979e4 100644 --- a/mitmproxy/contentviews.py +++ b/mitmproxy/contentviews.py @@ -19,6 +19,7 @@ import json import logging import subprocess import sys +import math from typing import Mapping # noqa @@ -30,6 +31,7 @@ from PIL import ExifTags from PIL import Image from six import BytesIO +from mitmproxy import models from mitmproxy import exceptions from mitmproxy.contrib import jsbeautifier from mitmproxy.contrib.wbxml import ASCommandResponse @@ -617,6 +619,36 @@ def safe_to_print(lines, encoding="utf8"): yield clean_line +def get_content_view_with_message_encoding(message, viewmode): + try: + content = message.content + if content != message.raw_content: + enc = "[decoded {}]".format( + message.headers.get("content-encoding") + ) + else: + enc = None + except ValueError: + content = message.raw_content + enc = "[cannot decode]" + try: + query = None + if isinstance(message, models.HTTPRequest): + query = message.query + description, lines = get_content_view( + viewmode, content, headers=message.headers, query=query + ) + except exceptions.ContentViewException: + description, lines = get_content_view( + get("Raw"), content, headers=message.headers + ) + description = description.replace("Raw", "Couldn't parse: falling back to Raw") + + if enc: + description = " ".join([enc, description]) + + return description, lines + def get_content_view(viewmode, data, **metadata): """ Args: diff --git a/mitmproxy/web/app.py b/mitmproxy/web/app.py index eabdb147..5c95c06f 100644 --- a/mitmproxy/web/app.py +++ b/mitmproxy/web/app.py @@ -14,7 +14,6 @@ import tornado.web from io import BytesIO from mitmproxy.flow import FlowWriter, FlowReader -from mitmproxy import exceptions from mitmproxy import filt from mitmproxy import models from mitmproxy import contentviews @@ -342,36 +341,6 @@ class FlowContent(RequestHandler): self.write(message.raw_content) class FlowContentView(RequestHandler): - def _get_content_view(self, message, viewmode): - - try: - content = message.content - if content != message.raw_content: - enc = "[decoded {}]".format( - message.headers.get("content-encoding") - ) - else: - enc = None - except ValueError: - content = message.raw_content - enc = "[cannot decode]" - try: - query = None - if isinstance(message, models.HTTPRequest): - query = message.query - description, lines = contentviews.get_content_view( - viewmode, content, headers=message.headers, query=query - ) - except exceptions.ContentViewException: - description, lines = contentviews.get_content_view( - contentviews.get("Raw"), content, headers=message.headers - ) - description = description.replace("Raw", "Couldn't parse: falling back to Raw") - - if enc: - description = " ".join([enc, description]) - - return description, lines def get(self, flow_id, message, content_view): message = getattr(self.flow, message) @@ -394,7 +363,7 @@ class FlowContentView(RequestHandler): self.set_header("Content-Encoding", "") - description, lines = self._get_content_view( + description, lines = contentviews.get_content_view_with_message_encoding( message, contentviews.get(content_view.replace('_', ' ')) ) -- cgit v1.2.3