aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/web/src/js/actions.js
diff options
context:
space:
mode:
Diffstat (limited to 'mitmproxy/web/src/js/actions.js')
-rw-r--r--mitmproxy/web/src/js/actions.js137
1 files changed, 137 insertions, 0 deletions
diff --git a/mitmproxy/web/src/js/actions.js b/mitmproxy/web/src/js/actions.js
new file mode 100644
index 00000000..2455a52e
--- /dev/null
+++ b/mitmproxy/web/src/js/actions.js
@@ -0,0 +1,137 @@
+var $ = require("jquery");
+var _ = require("lodash");
+var AppDispatcher = require("./dispatcher.js").AppDispatcher;
+
+var ActionTypes = {
+ // Connection
+ CONNECTION_OPEN: "connection_open",
+ CONNECTION_CLOSE: "connection_close",
+ CONNECTION_ERROR: "connection_error",
+
+ // Stores
+ SETTINGS_STORE: "settings",
+ EVENT_STORE: "events",
+ FLOW_STORE: "flows",
+};
+
+var StoreCmds = {
+ ADD: "add",
+ UPDATE: "update",
+ REMOVE: "remove",
+ RESET: "reset"
+};
+
+var ConnectionActions = {
+ open: function () {
+ AppDispatcher.dispatchViewAction({
+ type: ActionTypes.CONNECTION_OPEN
+ });
+ },
+ close: function () {
+ AppDispatcher.dispatchViewAction({
+ type: ActionTypes.CONNECTION_CLOSE
+ });
+ },
+ error: function () {
+ AppDispatcher.dispatchViewAction({
+ type: ActionTypes.CONNECTION_ERROR
+ });
+ }
+};
+
+var SettingsActions = {
+ update: function (settings) {
+
+ $.ajax({
+ type: "PUT",
+ url: "/settings",
+ contentType: 'application/json',
+ data: JSON.stringify(settings)
+ });
+
+ /*
+ //Facebook Flux: We do an optimistic update on the client already.
+ AppDispatcher.dispatchViewAction({
+ type: ActionTypes.SETTINGS_STORE,
+ cmd: StoreCmds.UPDATE,
+ data: settings
+ });
+ */
+ }
+};
+
+var EventLogActions_event_id = 0;
+var EventLogActions = {
+ add_event: function (message) {
+ AppDispatcher.dispatchViewAction({
+ type: ActionTypes.EVENT_STORE,
+ cmd: StoreCmds.ADD,
+ data: {
+ message: message,
+ level: "web",
+ id: "viewAction-" + EventLogActions_event_id++
+ }
+ });
+ }
+};
+
+var FlowActions = {
+ accept: function (flow) {
+ $.post("/flows/" + flow.id + "/accept");
+ },
+ accept_all: function(){
+ $.post("/flows/accept");
+ },
+ "delete": function(flow){
+ $.ajax({
+ type:"DELETE",
+ url: "/flows/" + flow.id
+ });
+ },
+ duplicate: function(flow){
+ $.post("/flows/" + flow.id + "/duplicate");
+ },
+ replay: function(flow){
+ $.post("/flows/" + flow.id + "/replay");
+ },
+ revert: function(flow){
+ $.post("/flows/" + flow.id + "/revert");
+ },
+ update: function (flow, nextProps) {
+ /*
+ //Facebook Flux: We do an optimistic update on the client already.
+ var nextFlow = _.cloneDeep(flow);
+ _.merge(nextFlow, nextProps);
+ AppDispatcher.dispatchViewAction({
+ type: ActionTypes.FLOW_STORE,
+ cmd: StoreCmds.UPDATE,
+ data: nextFlow
+ });
+ */
+ $.ajax({
+ type: "PUT",
+ url: "/flows/" + flow.id,
+ contentType: 'application/json',
+ data: JSON.stringify(nextProps)
+ });
+ },
+ clear: function(){
+ $.post("/clear");
+ }
+};
+
+var Query = {
+ SEARCH: "s",
+ HIGHLIGHT: "h",
+ SHOW_EVENTLOG: "e"
+};
+
+module.exports = {
+ ActionTypes: ActionTypes,
+ ConnectionActions: ConnectionActions,
+ FlowActions: FlowActions,
+ StoreCmds: StoreCmds,
+ SettingsActions: SettingsActions,
+ EventLogActions: EventLogActions,
+ Query: Query
+}; \ No newline at end of file