diff options
author | Clemens <cle1000.cb@gmail.com> | 2016-07-28 17:10:06 +0200 |
---|---|---|
committer | Clemens <cle1000.cb@gmail.com> | 2016-07-28 17:10:06 +0200 |
commit | ad5bebeda0f1da890d8ed94b6096515e03f44a25 (patch) | |
tree | cd5640aa7c77d59f8be9fe6abe31ffdf66435a5e /web | |
parent | 3e6c284757ffbb42aef34281567cf1adedd21ae9 (diff) | |
download | mitmproxy-ad5bebeda0f1da890d8ed94b6096515e03f44a25.tar.gz mitmproxy-ad5bebeda0f1da890d8ed94b6096515e03f44a25.tar.bz2 mitmproxy-ad5bebeda0f1da890d8ed94b6096515e03f44a25.zip |
mitmproxy.contentviews added
Diffstat (limited to 'web')
-rw-r--r-- | web/src/css/app.less | 1 | ||||
-rw-r--r-- | web/src/css/contentview.less | 10 | ||||
-rw-r--r-- | web/src/js/components/ContentView.jsx | 2 | ||||
-rw-r--r-- | web/src/js/components/ContentView/ContentLoader.jsx | 2 | ||||
-rw-r--r-- | web/src/js/components/ContentView/ContentViews.jsx | 42 | ||||
-rw-r--r-- | web/src/js/components/ContentView/ViewSelector.jsx | 2 | ||||
-rw-r--r-- | web/src/js/flow/utils.js | 4 |
7 files changed, 34 insertions, 29 deletions
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 ( - <div> + <div className="contentview"> <View flow={flow} message={message} contentView={contentView} readonly={readonly} onChange={onContentChange}/> <div className="view-options text-center"> 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 <pre>{json}</pre> -} -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 <View message={message} flow={flow} readonly={readonly} onChange={onChange}/> } -function ViewServer({contentView, content}){ +function ViewServer({content, contentView}){ + let data = JSON.parse(content) return <div> - <pre>load from server this view: {contentView}</pre> - <pre>{content}</pre> + {contentView != data.description && + <div className="alert alert-warning">{data.description}</div> + } + <pre> + {data.lines.map((line, i) => + <div key={`line${i}`}> + {line.map((tuple, j) => + <span key={`tuple${j}`} className={tuple[0]}> + {tuple[1]} + </span> + )} + </div> + )} + </pre> </div> - } 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 }) { <ViewButton name="ViewAuto">auto: {autoViewName}</ViewButton> {Object.keys(ContentViews).map(name => - name !== "ViewAuto" && + name !== "ViewAuto" && name !== "ViewServer" && <ViewButton key={name} name={name}>{name.toLowerCase().replace('view', '')}</ViewButton> )} 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, { |