mirror of
https://github.com/zhigang1992/mitmproxy.git
synced 2026-04-29 12:45:00 +08:00
mitmproxy.contentviews added
This commit is contained in:
@@ -18,3 +18,4 @@ html {
|
||||
@import (less) "eventlog.less";
|
||||
@import (less) "footer.less";
|
||||
@import (less) "codemirror.less";
|
||||
@import (less) "contentview.less";
|
||||
|
||||
10
web/src/css/contentview.less
Normal file
10
web/src/css/contentview.less
Normal file
@@ -0,0 +1,10 @@
|
||||
.contentview {
|
||||
.header {
|
||||
font-weight: bold;
|
||||
}
|
||||
.highlight{
|
||||
color: pink;
|
||||
}
|
||||
.offset{ }
|
||||
.text{ }
|
||||
}
|
||||
@@ -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">
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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>
|
||||
)}
|
||||
|
||||
|
||||
@@ -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, {
|
||||
|
||||
Reference in New Issue
Block a user