mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-22 07:08:10 +00:00
mitmweb: minor fixes
This commit is contained in:
parent
a0ddedff6f
commit
77f05178ad
@ -8,6 +8,7 @@ from io import BytesIO
|
||||
|
||||
import tornado.web
|
||||
import tornado.websocket
|
||||
import tornado.escape
|
||||
from mitmproxy import contentviews
|
||||
from mitmproxy import flow
|
||||
from mitmproxy import flowfilter
|
||||
@ -95,6 +96,8 @@ class BasicAuth:
|
||||
class RequestHandler(BasicAuth, tornado.web.RequestHandler):
|
||||
|
||||
def write(self, chunk):
|
||||
# Writing arrays on the top level is ok nowadays.
|
||||
# http://flask.pocoo.org/docs/0.11/security/#json-security
|
||||
if isinstance(chunk, list):
|
||||
chunk = tornado.escape.json_encode(chunk)
|
||||
self.set_header("Content-Type", "application/json; charset=UTF-8")
|
||||
|
@ -1,6 +1,11 @@
|
||||
/**
|
||||
* The WebSocket backend is responsible for updating our knowledge of flows and events
|
||||
* from the REST API and live updates delivered via a WebSocket connection.
|
||||
* An alternative backend may use the REST API only to host static instances.
|
||||
*/
|
||||
import { fetchApi } from "../utils"
|
||||
|
||||
export const CMD_RESET = 'reset'
|
||||
const CMD_RESET = 'reset'
|
||||
|
||||
export default class WebsocketBackend {
|
||||
constructor(store) {
|
||||
|
@ -1,6 +1,5 @@
|
||||
import { fetchApi } from "../utils"
|
||||
import reduceStore from "./utils/store"
|
||||
import * as storeActions from "./utils/store"
|
||||
import reduceStore, * as storeActions from "./utils/store"
|
||||
import Filt from "../filt/filt"
|
||||
import { RequestUtils } from "../flow/utils"
|
||||
|
||||
@ -30,7 +29,8 @@ export default function reduce(state = defaultState, action) {
|
||||
case UPDATE:
|
||||
case REMOVE:
|
||||
case RECEIVE:
|
||||
// FIXME: Implement select switch for remove
|
||||
// FIXME: Update state.selected on REMOVE:
|
||||
// The selected flow may have been removed, we need to select the next one in the view.
|
||||
let storeAction = storeActions[action.cmd](
|
||||
action.data,
|
||||
makeFilter(state.filter),
|
||||
|
@ -13,6 +13,22 @@ const defaultState = {
|
||||
viewIndex: {},
|
||||
}
|
||||
|
||||
/**
|
||||
* The store reducer can be used as a mixin to another reducer that always returns a
|
||||
* new { byId, list, listIndex, view, viewIndex } object. The reducer using the store
|
||||
* usually has to map its action to the matching store action and then call the mixin with that.
|
||||
*
|
||||
* Example Usage:
|
||||
*
|
||||
* import reduceStore, * as storeActions from "./utils/store"
|
||||
*
|
||||
* case EVENTLOG_ADD:
|
||||
* return {
|
||||
* ...state,
|
||||
* ...reduceStore(state, storeActions.add(action.data))
|
||||
* }
|
||||
*
|
||||
*/
|
||||
export default function reduce(state = defaultState, action) {
|
||||
|
||||
let { byId, list, listIndex, view, viewIndex } = state
|
||||
|
@ -1,3 +1,10 @@
|
||||
/**
|
||||
* Instead of dealing with react-router's ever-changing APIs,
|
||||
* we use a simple url state manager where we only
|
||||
*
|
||||
* - read the initial URL state on page load
|
||||
* - push updates to the URL later on.
|
||||
*/
|
||||
import { select, setFilter, setHighlight } from "./ducks/flows"
|
||||
import { selectTab } from "./ducks/ui/flow"
|
||||
import { toggleVisibility } from "./ducks/eventLog"
|
||||
@ -65,9 +72,8 @@ function updateUrlFromStore(store) {
|
||||
if (queryStr) {
|
||||
url += "?" + queryStr
|
||||
}
|
||||
if (window.location.hash !== url) {
|
||||
// FIXME: replace state
|
||||
window.location.hash = url
|
||||
if (window.location.hash.substr(1) !== url) {
|
||||
history.replaceState(undefined, "", `/#${url}`)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user