aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClemens <cle1000.cb@gmail.com>2016-07-29 15:37:41 +0200
committerClemens <cle1000.cb@gmail.com>2016-07-29 15:37:41 +0200
commitcb7da1ee44b19c15036459c2c9fdb2a34a3565f2 (patch)
tree80aaccb55772c06a600113a32c5ff1787ba687a5
parenta56c2ca731ff9c4a22438553dea0e4ecf7a51f1d (diff)
downloadmitmproxy-cb7da1ee44b19c15036459c2c9fdb2a34a3565f2.tar.gz
mitmproxy-cb7da1ee44b19c15036459c2c9fdb2a34a3565f2.tar.bz2
mitmproxy-cb7da1ee44b19c15036459c2c9fdb2a34a3565f2.zip
moved getlines to contentviews
-rw-r--r--mitmproxy/contentviews.py32
-rw-r--r--mitmproxy/web/app.py33
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('_', ' '))
)