From ad5bebeda0f1da890d8ed94b6096515e03f44a25 Mon Sep 17 00:00:00 2001 From: Clemens Date: Thu, 28 Jul 2016 17:10:06 +0200 Subject: mitmproxy.contentviews added --- web/src/css/app.less | 1 + web/src/css/contentview.less | 10 ++++++ web/src/js/components/ContentView.jsx | 2 +- .../js/components/ContentView/ContentLoader.jsx | 2 +- web/src/js/components/ContentView/ContentViews.jsx | 42 ++++++++++------------ web/src/js/components/ContentView/ViewSelector.jsx | 2 +- web/src/js/flow/utils.js | 4 +-- 7 files changed, 34 insertions(+), 29 deletions(-) create mode 100644 web/src/css/contentview.less (limited to 'web/src') diff --git a/web/src/css/app.less b/web/src/css/app.less index 6f27f447..353e412a 100644 --- a/web/src/css/app.less +++ b/web/src/css/app.less @@ -18,3 +18,4 @@ html { @import (less) "eventlog.less"; @import (less) "footer.less"; @import (less) "codemirror.less"; +@import (less) "contentview.less"; diff --git a/web/src/css/contentview.less b/web/src/css/contentview.less new file mode 100644 index 00000000..327dd689 --- /dev/null +++ b/web/src/css/contentview.less @@ -0,0 +1,10 @@ +.contentview { + .header { + font-weight: bold; + } + .highlight{ + color: pink; + } + .offset{ } + .text{ } +} diff --git a/web/src/js/components/ContentView.jsx b/web/src/js/components/ContentView.jsx index a93ce395..de4ffd06 100644 --- a/web/src/js/components/ContentView.jsx +++ b/web/src/js/components/ContentView.jsx @@ -35,7 +35,7 @@ function ContentView(props) { const View = ContentViews[contentView] || ContentViews['ViewServer'] return ( -
+
diff --git a/web/src/js/components/ContentView/ContentLoader.jsx b/web/src/js/components/ContentView/ContentLoader.jsx index 9babb8f7..e7a6f379 100644 --- a/web/src/js/components/ContentView/ContentLoader.jsx +++ b/web/src/js/components/ContentView/ContentLoader.jsx @@ -53,7 +53,7 @@ export default View => class extends React.Component { return this.setState({request: undefined, content: ""}) } - let requestUrl = MessageUtils.getContentURL(props.flow, props.message, props.contentView) + let requestUrl = MessageUtils.getContentURL(props.flow, props.message, (View.name == 'ViewServer' ? props.contentView : undefined)) // We use XMLHttpRequest instead of fetch() because fetch() is not (yet) abortable. let request = new XMLHttpRequest(); diff --git a/web/src/js/components/ContentView/ContentViews.jsx b/web/src/js/components/ContentView/ContentViews.jsx index 732f9f5e..89e97267 100644 --- a/web/src/js/components/ContentView/ContentViews.jsx +++ b/web/src/js/components/ContentView/ContentViews.jsx @@ -28,26 +28,8 @@ function ViewRaw({ content, readonly, onChange }) { } ViewRaw = ContentLoader(ViewRaw) - -const isJSON = /^application\/json$/i -ViewJSON.matches = msg => isJSON.test(MessageUtils.getContentType(msg)) -ViewJSON.propTypes = { - content: React.PropTypes.string.isRequired, -} -function ViewJSON({ content }) { - let json = content - try { - json = JSON.stringify(JSON.parse(content), null, 2); - } catch (e) { - // @noop - } - return
{json}
-} -ViewJSON = ContentLoader(ViewJSON) - - ViewAuto.matches = () => false -ViewAuto.findView = msg => [ViewImage, ViewJSON, ViewRaw].find(v => v.matches(msg)) || ViewRaw +ViewAuto.findView = msg => [ViewImage, ViewRaw].find(v => v.matches(msg)) || ViewRaw ViewAuto.propTypes = { message: React.PropTypes.object.isRequired, flow: React.PropTypes.object.isRequired, @@ -57,14 +39,26 @@ function ViewAuto({ message, flow, readonly, onChange }) { return } -function ViewServer({contentView, content}){ +function ViewServer({content, contentView}){ + let data = JSON.parse(content) return
-
load from server this view: {contentView}
-
{content}
+ {contentView != data.description && +
{data.description}
+ } +
+                {data.lines.map((line, i) =>
+                    
+ {line.map((tuple, j) => + + {tuple[1]} + + )} +
+ )} +
- } ViewServer = ContentLoader(ViewServer) -export { ViewImage, ViewRaw, ViewAuto, ViewJSON, ViewServer } +export { ViewImage, ViewRaw, ViewAuto, ViewServer } diff --git a/web/src/js/components/ContentView/ViewSelector.jsx b/web/src/js/components/ContentView/ViewSelector.jsx index c3e1e105..423cc157 100644 --- a/web/src/js/components/ContentView/ViewSelector.jsx +++ b/web/src/js/components/ContentView/ViewSelector.jsx @@ -38,7 +38,7 @@ function ViewSelector({ message, contentViews }) { auto: {autoViewName} {Object.keys(ContentViews).map(name => - name !== "ViewAuto" && + name !== "ViewAuto" && name !== "ViewServer" && {name.toLowerCase().replace('view', '')} )} diff --git a/web/src/js/flow/utils.js b/web/src/js/flow/utils.js index 0232e753..b8435aa0 100644 --- a/web/src/js/flow/utils.js +++ b/web/src/js/flow/utils.js @@ -49,8 +49,8 @@ export var MessageUtils = { } else if (message === flow.response) { message = "response"; } - return "/flows/" + flow.id + "/" + message + "/content" + (view ? "?content_view="+view : ""); - }, + return `/flows/${flow.id}/${message}/content` + (view ? `?cv=${view}` : ''); + } }; export var RequestUtils = _.extend(MessageUtils, { -- cgit v1.2.3