def keypress(self, size, key): key = common.shortcuts(key) if key == "A": self.master.accept_all() self.master.sync_list_view() elif key == "C": self.master.clear_flows() elif key == "e": self.master.toggle_eventlog() elif key == "l": self.master.prompt("Limit: ", self.master.state.limit_txt, self.master.set_limit) elif key == "L": self.master.path_prompt( "Load flows: ", self.master.state.last_saveload, self.master.load_flows_callback ) elif key == "F": self.master.toggle_follow_flows() elif key == "W": if self.master.stream: self.master.stop_stream() else: self.master.path_prompt( "Stream flows to: ", self.master.state.last_saveload, self.master.start_stream ) else: return urwid.ListBox.keypress(self, size, key)
def keypress(self, size, key): key = common.shortcuts(key) if key == "A": self.master.accept_all() self.master.sync_list_view() elif key == "C": self.master.clear_flows() elif key == "e": self.master.toggle_eventlog() elif key == "l": self.master.prompt("Limit: ", self.master.state.limit_txt, self.master.set_limit) elif key == "L": self.master.path_prompt("Load flows: ", self.master.state.last_saveload, self.master.load_flows_callback) elif key == "F": self.master.toggle_follow_flows() elif key == "W": if self.master.stream: self.master.stop_stream() else: self.master.path_prompt("Stream flows to: ", self.master.state.last_saveload, self.master.start_stream) else: return urwid.ListBox.keypress(self, size, key)
def keypress(self, size, key): key = common.shortcuts(key) if key == "q": self.master.statusbar = self.state[0] self.master.body = self.state[1] self.master.header = self.state[2] self.master.make_view() return None return urwid.ListBox.keypress(self, size, key)
def keypress(self, size, key): key = common.shortcuts(key) if key == "A": self.master.accept_all() self.master.sync_list_view() key = None elif key == "C": self.master.clear_connections() key = None elif key == "v": self.master.toggle_eventlog() key = None return urwid.ListBox.keypress(self, size, key)
def keypress(self, size, key): if self.walker.editing: if key in ["esc"]: self.walker.stop_edit() elif key == "tab": pf, pfc = self.walker.focus, self.walker.focus_col self.walker.tab_next() if self.walker.focus == pf and self.walker.focus_col != pfc: self.walker.start_edit() else: self.w.keypress(size, key) return None key = common.shortcuts(key) if key in ["q", "esc"]: res = [] for i in self.walker.lst: if not i[1] and any([x.strip() for x in i[0]]): res.append(i[0]) self.callback(res, *self.cb_args, **self.cb_kwargs) self.master.pop_view() elif key in ["h", "left"]: self.walker.left() elif key in ["l", "right"]: self.walker.right() elif key == "tab": self.walker.tab_next() elif key == "a": self.walker.add() elif key == "A": self.walker.insert() elif key == "d": self.walker.delete_focus() elif key == "r": self.master.path_prompt("Read file: ", "", self.read_file) elif key == "R": self.master.path_prompt("Read unescaped file: ", "", self.read_file, True) elif key == "e": o = self.walker.get_current_value() if o is not None: n = self.master.spawn_editor(o.encode("string-escape")) n = utils.clean_hanging_newline(n) self.walker.set_current_value(n, False) self.walker._modified() elif key in ["enter"]: self.walker.start_edit() elif not self.handle_key(key): return self.w.keypress(size, key)
def keypress(self, size, key): if self.walker.editing: if key in ["esc"]: self.walker.stop_edit() elif key == "tab": pf, pfc = self.walker.focus, self.walker.focus_col self.walker.tab_next() if self.walker.focus == pf and self.walker.focus_col != pfc: self.walker.start_edit() else: self.w.keypress(size, key) return None key = common.shortcuts(key) if key in ["q", "esc"]: res = [] for i in self.walker.lst: if any([x.strip() for x in i[0]]): v = i[0] if self.encoding: v = [x.encode(self.encoding) for x in v] res.append(v) self.callback(res, *self.cb_args, **self.cb_kwargs) self.master.pop_view() elif key in ["h", "left"]: self.walker.left() elif key in ["l", "right"]: self.walker.right() elif key == "tab": self.walker.tab_next() elif key == "a": self.walker.add() elif key == "A": self.walker.insert() elif key == "d": self.walker.delete_focus() elif key == "e": o = self.walker.get_current_value() if o is not None: n = self.master.spawn_editor(o) n = utils.clean_hanging_newline(n) self.walker.set_current_value(n) self.walker._modified() elif key in ["enter"]: self.walker.start_edit() else: return self.w.keypress(size, key)
def keypress(self, size, key): key = common.shortcuts(key) if key == "A": self.master.accept_all() self.master.sync_list_view() elif key == "C": self.master.clear_connections() elif key == "e": self.master.toggle_eventlog() elif key == "l": self.master.prompt("Limit: ", self.master.state.limit_txt, self.master.set_limit) self.master.sync_list_view() elif key == "L": self.master.path_prompt( "Load flows: ", self.master.state.last_saveload, self.master.load_flows_callback ) else: return urwid.ListBox.keypress(self, size, key)
def keypress(self, size, key): if self.walker.editing: if key in ["esc", "enter"]: self.walker.stop_edit() elif key == "tab": pf, pfc = self.walker.focus, self.walker.focus_col self.walker.tab_next() if self.walker.focus == pf and self.walker.focus_col != pfc: self.walker.start_edit() else: self.w.keypress(size, key) return None key = common.shortcuts(key) if key in ["q", "esc"]: self.callback(self.walker.lst, *self.cb_args, **self.cb_kwargs) self.master.pop_view() elif key in ["h", "left"]: self.walker.left() elif key in ["l", "right"]: self.walker.right() elif key == "tab": self.walker.tab_next() elif key == "a": self.walker.add() elif key == "A": self.walker.insert() elif key == "d": self.walker.delete_focus() elif key == "e": o = self.walker.get_current_value() if o is not None: n = self.master.spawn_editor(o) n = utils.clean_hanging_newline(n) self.walker.set_current_value(n) self.walker._modified() elif key in ["enter"]: self.walker.start_edit() else: return self.w.keypress(size, key)
def keypress(self, size, key): if self.walker.editing: if key in ["esc", "enter"]: self.walker.stop_edit() elif key == "tab": pf = self.walker.focus self.walker.tab_next() if self.walker.focus == pf: self.walker.start_edit() else: self.w.keypress(size, key) return None key = common.shortcuts(key) if key in ["q", "esc"]: self.callback(self.walker.lst, *self.cb_args, **self.cb_kwargs) self.master.pop_view() elif key in ["h", "left"]: self.walker.left() elif key in ["l", "right"]: self.walker.right() elif key == "tab": self.walker.tab_next() elif key == "a": self.walker.add() elif key == "A": self.walker.insert() elif key == "d": self.walker.delete_focus() elif key == "e": o = self.walker.get_current_value() if o is not None: n = self.master.spawn_editor(o) n = utils.clean_hanging_newline(n) self.walker.set_current_value(n) self.walker._modified() elif key in ["enter"]: self.walker.start_edit() else: return self.w.keypress(size, key)
def keypress(self, size, key): if key == " ": self.view_next_flow(self.flow) return key key = common.shortcuts(key) if self.state.view_flow_mode == common.VIEW_FLOW_REQUEST: conn = self.flow.request else: conn = self.flow.response if key == "q": self.master.view_flowlist() key = None elif key == "tab": if self.state.view_flow_mode == common.VIEW_FLOW_REQUEST: self.view_response() else: self.view_request() elif key in ("up", "down", "page up", "page down"): # Why doesn't this just work?? self.w.keypress(size, key) elif key == "a": self.flow.accept_intercept() self.master.view_flow(self.flow) elif key == "A": self.master.accept_all() self.master.view_flow(self.flow) elif key == "d": if self.state.flow_count() == 1: self.master.view_flowlist() elif self.state.view.index(self.flow) == len(self.state.view)-1: self.view_prev_flow(self.flow) else: self.view_next_flow(self.flow) f = self.flow f.kill(self.master) self.state.delete_flow(f) elif key == "D": f = self.master.duplicate_flow(self.flow) self.master.view_flow(f) self.master.currentflow = f self.master.statusbar.message("Duplicated.") elif key == "e": if self.state.view_flow_mode == common.VIEW_FLOW_REQUEST: self.master.prompt_onekey( "Edit request", ( ("query", "q"), ("form", "f"), ("url", "u"), ("header", "h"), ("raw body", "r"), ("method", "m"), ), self.edit ) else: self.master.prompt_onekey( "Edit response", ( ("code", "c"), ("message", "m"), ("header", "h"), ("raw body", "r"), ), self.edit ) key = None elif key == "m": self.master.prompt_onekey( "View", ( ("raw", "r"), ("pretty", "p"), ("hex", "h"), ), self.master.changeview ) key = None elif key == "p": self.view_prev_flow(self.flow) elif key == "r": r = self.master.replay_request(self.flow) if r: self.master.statusbar.message(r) self.master.refresh_flow(self.flow) elif key == "V": self.state.revert(self.flow) self.master.refresh_flow(self.flow) elif key == "W": self.master.path_prompt( "Save this flow: ", self.state.last_saveload, self.master.save_one_flow, self.flow ) elif key == "v": if conn and conn.content: t = conn.headers["content-type"] or [None] t = t[0] self.master.spawn_external_viewer(conn.content, t) elif key == "b": if conn: if self.state.view_flow_mode == common.VIEW_FLOW_REQUEST: self.master.path_prompt( "Save request body: ", self.state.last_saveload, self.save_body ) else: self.master.path_prompt( "Save response body: ", self.state.last_saveload, self.save_body ) elif key == "|": self.master.path_prompt( "Send flow to script: ", self.state.last_script, self.master.run_script_once, self.flow ) elif key == "z": if conn: e = conn.headers["content-encoding"] or ["identity"] if e[0] != "identity": conn.decode() else: self.master.prompt_onekey( "Select encoding: ", ( ("gzip", "z"), ("deflate", "d"), ), self.encode_callback, conn ) self.master.refresh_flow(self.flow) else: return key
def keypress(self, size, key): key = common.shortcuts(key) if key == "C": self.master.clear_events() key = None return urwid.ListBox.keypress(self, size, key)
class ConnectionItem(common.WWrap): def __init__(self, master, state, flow, focus): self.master, self.state, self.flow = master, state, flow self.focus = focus w = self.get_text() common.WWrap.__init__(self, w) def get_text(self): return common.format_flow(self.flow, self.focus) def selectable(self): return True def keypress(self, (maxcol,), key): key = common.shortcuts(key) if key == "a": self.flow.accept_intercept() self.master.sync_list_view() elif key == "d": self.flow.kill(self.master) self.state.delete_flow(self.flow) self.master.sync_list_view() elif key == "D": f = self.master.duplicate_flow(self.flow) self.master.currentflow = f self.master.focus_current() elif key == "r": r = self.master.replay_request(self.flow) if r: self.master.statusbar.message(r) self.master.sync_list_view() elif key == "V": self.state.revert(self.flow) self.master.sync_list_view() elif key == "w": self.master.path_prompt( "Save flows: ", self.state.last_saveload, self.master.save_flows ) elif key == "W": self.master.path_prompt( "Save this flow: ", self.state.last_saveload, self.master.save_one_flow, self.flow ) elif key == "X": self.flow.kill(self.master) elif key == "enter": if self.flow.request: self.master.view_flow(self.flow) elif key == "|": self.master.path_prompt( "Send flow to script: ", self.state.last_script, self.master.run_script_once, self.flow ) else: return key
class ConnectionItem(common.WWrap): def __init__(self, master, state, flow, focus): self.master, self.state, self.flow = master, state, flow self.f = focus w = self.get_text() common.WWrap.__init__(self, w) def get_text(self): return common.format_flow(self.flow, self.f) def selectable(self): return True def save_flows_prompt(self, k): if k == "a": self.master.path_prompt("Save all flows to: ", self.state.last_saveload, self.master.save_flows) else: self.master.path_prompt("Save this flow to: ", self.state.last_saveload, self.master.save_one_flow, self.flow) def stop_server_playback_prompt(self, a): if a != "n": self.master.stop_server_playback() def server_replay_prompt(self, k): if k == "a": self.master.start_server_playback( [i.copy() for i in self.master.state.view], self.master.killextra, self.master.rheaders, False, self.master.nopop) elif k == "t": self.master.start_server_playback([self.flow.copy()], self.master.killextra, self.master.rheaders, False, self.master.nopop) else: self.master.path_prompt("Server replay path: ", self.state.last_saveload, self.master.server_playback_path) def keypress(self, (maxcol, ), key): key = common.shortcuts(key) if key == "a": self.flow.accept_intercept() self.master.sync_list_view() elif key == "d": self.flow.kill(self.master) self.state.delete_flow(self.flow) self.master.sync_list_view() elif key == "D": f = self.master.duplicate_flow(self.flow) self.master.currentflow = f self.master.focus_current() elif key == "r": self.flow.backup() r = self.master.replay_request(self.flow) if r: self.master.statusbar.message(r) self.master.sync_list_view() elif key == "S": if not self.master.server_playback: self.master.prompt_onekey( "Server Replay", ( ("all flows", "a"), ("this flow", "t"), ("file", "f"), ), self.server_replay_prompt, ) else: self.master.prompt_onekey( "Stop current server replay?", ( ("yes", "y"), ("no", "n"), ), self.stop_server_playback_prompt, ) elif key == "V": if not self.flow.modified(): self.master.statusbar.message("Flow not modified.") return self.state.revert(self.flow) self.master.sync_list_view() self.master.statusbar.message("Reverted.") elif key == "w": self.master.prompt_onekey( "Save", ( ("all flows", "a"), ("this flow", "t"), ), self.save_flows_prompt, ) elif key == "X": self.flow.kill(self.master) elif key == "enter": if self.flow.request: self.master.view_flow(self.flow) elif key == "|": self.master.path_prompt("Send flow to script: ", self.state.last_script, self.master.run_script_once, self.flow) else: return key
def keypress(self, size, key): if key == " ": self.view_next_flow(self.flow) return key = common.shortcuts(key) if self.state.view_flow_mode == common.VIEW_FLOW_REQUEST: conn = self.flow.request else: conn = self.flow.response if key == "q": self.master.view_flowlist() key = None elif key == "tab": if self.state.view_flow_mode == common.VIEW_FLOW_REQUEST: self.view_response() else: self.view_request() elif key in ("up", "down", "page up", "page down"): # Why doesn't this just work?? self.w.keypress(size, key) elif key == "a": self.flow.accept_intercept() self.master.view_flow(self.flow) elif key == "A": self.master.accept_all() self.master.view_flow(self.flow) elif key == "b": if conn: if self.state.view_flow_mode == common.VIEW_FLOW_REQUEST: self.master.path_prompt( "Save request body: ", self.state.last_saveload, self.save_body ) else: self.master.path_prompt( "Save response body: ", self.state.last_saveload, self.save_body ) elif key == "d": if self.state.flow_count() == 1: self.master.view_flowlist() elif self.state.view.index(self.flow) == len(self.state.view)-1: self.view_prev_flow(self.flow) else: self.view_next_flow(self.flow) f = self.flow f.kill(self.master) self.state.delete_flow(f) elif key == "D": f = self.master.duplicate_flow(self.flow) self.master.view_flow(f) self.master.currentflow = f self.master.statusbar.message("Duplicated.") elif key == "e": if self.state.view_flow_mode == common.VIEW_FLOW_REQUEST: self.master.prompt_onekey( "Edit request", ( ("query", "q"), ("path", "p"), ("url", "u"), ("header", "h"), ("form", "f"), ("raw body", "r"), ("method", "m"), ), self.edit ) else: self.master.prompt_onekey( "Edit response", ( ("code", "c"), ("message", "m"), ("header", "h"), ("raw body", "r"), ), self.edit ) key = None elif key == "f": self.master.statusbar.message("Loading all body data...") self.state.add_flow_setting( self.flow, (self.state.view_flow_mode, "fullcontents"), True ) self.master.refresh_flow(self.flow) self.master.statusbar.message("") elif key == "m": p = list(contentview.view_prompts) p.insert(0, ("clear", "c")) self.master.prompt_onekey( "Display mode", p, self.change_this_display_mode ) key = None elif key == "p": self.view_prev_flow(self.flow) elif key == "r": self.flow.backup() r = self.master.replay_request(self.flow) if r: self.master.statusbar.message(r) self.master.refresh_flow(self.flow) elif key == "V": if not self.flow.modified(): self.master.statusbar.message("Flow not modified.") return self.state.revert(self.flow) self.master.refresh_flow(self.flow) self.master.statusbar.message("Reverted.") elif key == "W": self.master.path_prompt( "Save this flow: ", self.state.last_saveload, self.master.save_one_flow, self.flow ) elif key == "v": if conn and conn.content: t = conn.headers["content-type"] or [None] t = t[0] if os.environ.has_key("EDITOR") or os.environ.has_key("PAGER"): self.master.spawn_external_viewer(conn.content, t) else: self.master.statusbar.message("Error! Set $EDITOR or $PAGER.") elif key == "|": self.master.path_prompt( "Send flow to script: ", self.state.last_script, self.master.run_script_once, self.flow ) elif key == "x": self.master.prompt_onekey( "Delete body", ( ("completely", "c"), ("mark as missing", "m"), ), self.delete_body ) key = None elif key == "X": self.master.view_flowdetails(self.flow) elif key == "z": if conn: self.flow.backup() e = conn.headers.get_first("content-encoding", "identity") if e != "identity": conn.decode() else: self.master.prompt_onekey( "Select encoding: ", ( ("gzip", "z"), ("deflate", "d"), ), self.encode_callback, conn ) self.master.refresh_flow(self.flow) else: return key
def keypress(self, size, key): if key == " ": self.view_next_flow(self.flow) return key = common.shortcuts(key) if self.state.view_flow_mode == common.VIEW_FLOW_REQUEST: conn = self.flow.request else: conn = self.flow.response if key == "q": self.master.view_flowlist() key = None elif key == "tab": if self.state.view_flow_mode == common.VIEW_FLOW_REQUEST: self.view_response() else: self.view_request() elif key in ("up", "down", "page up", "page down"): # Why doesn't this just work?? self.w.keypress(size, key) elif key == "a": self.flow.accept_intercept() self.master.view_flow(self.flow) elif key == "A": self.master.accept_all() self.master.view_flow(self.flow) elif key == "b": if conn: if self.state.view_flow_mode == common.VIEW_FLOW_REQUEST: self.master.path_prompt( "Save request body: ", self.state.last_saveload, self.save_body ) else: self.master.path_prompt( "Save response body: ", self.state.last_saveload, self.save_body ) elif key == "d": if self.state.flow_count() == 1: self.master.view_flowlist() elif self.state.view.index(self.flow) == len(self.state.view) - 1: self.view_prev_flow(self.flow) else: self.view_next_flow(self.flow) f = self.flow f.kill(self.master) self.state.delete_flow(f) elif key == "D": f = self.master.duplicate_flow(self.flow) self.master.view_flow(f) self.master.currentflow = f self.master.statusbar.message("Duplicated.") elif key == "e": if self.state.view_flow_mode == common.VIEW_FLOW_REQUEST: self.master.prompt_onekey( "Edit request", ( ("query", "q"), ("path", "p"), ("url", "u"), ("header", "h"), ("form", "f"), ("raw body", "r"), ("method", "m"), ), self.edit ) else: self.master.prompt_onekey( "Edit response", ( ("code", "c"), ("message", "m"), ("header", "h"), ("raw body", "r"), ), self.edit ) key = None elif key == "f": self.master.statusbar.message("Loading all body data...") self.state.add_flow_setting( self.flow, (self.state.view_flow_mode, "fullcontents"), True ) self.master.refresh_flow(self.flow) self.master.statusbar.message("") elif key == "m": p = list(contentview.view_prompts) p.insert(0, ("clear", "c")) self.master.prompt_onekey( "Display mode", p, self.change_this_display_mode ) key = None elif key == "p": self.view_prev_flow(self.flow) elif key == "r": self.flow.backup() r = self.master.replay_request(self.flow) if r: self.master.statusbar.message(r) self.master.refresh_flow(self.flow) elif key == "V": if not self.flow.modified(): self.master.statusbar.message("Flow not modified.") return self.state.revert(self.flow) self.master.refresh_flow(self.flow) self.master.statusbar.message("Reverted.") elif key == "W": self.master.path_prompt( "Save this flow: ", self.state.last_saveload, self.master.save_one_flow, self.flow ) elif key == "v": if conn and conn.content: t = conn.headers["content-type"] or [None] t = t[0] if "EDITOR" in os.environ or "PAGER" in os.environ: self.master.spawn_external_viewer(conn.content, t) else: self.master.statusbar.message("Error! Set $EDITOR or $PAGER.") elif key == "|": self.master.path_prompt( "Send flow to script: ", self.state.last_script, self.master.run_script_once, self.flow ) elif key == "x": self.master.prompt_onekey( "Delete body", ( ("completely", "c"), ("mark as missing", "m"), ), self.delete_body ) key = None elif key == "X": self.master.view_flowdetails(self.flow) elif key == "z": if conn: self.flow.backup() e = conn.headers.get_first("content-encoding", "identity") if e != "identity": conn.decode() else: self.master.prompt_onekey( "Select encoding: ", ( ("gzip", "z"), ("deflate", "d"), ), self.encode_callback, conn ) self.master.refresh_flow(self.flow) else: return key