aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/console/__init__.py
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2015-02-05 14:44:45 +0100
committerMaximilian Hils <git@maximilianhils.com>2015-02-05 14:44:45 +0100
commit0ac3227b7bb27a76b6f49aa1605f1b1887a01a10 (patch)
treeab68843e42e06335f71d842eb71f70d89167c0fb /libmproxy/console/__init__.py
parent19555bb39ab09f5e5b5dd663136e0105d2b3a625 (diff)
downloadmitmproxy-0ac3227b7bb27a76b6f49aa1605f1b1887a01a10.tar.gz
mitmproxy-0ac3227b7bb27a76b6f49aa1605f1b1887a01a10.tar.bz2
mitmproxy-0ac3227b7bb27a76b6f49aa1605f1b1887a01a10.zip
clean up flow reading
Diffstat (limited to 'libmproxy/console/__init__.py')
-rw-r--r--libmproxy/console/__init__.py45
1 files changed, 20 insertions, 25 deletions
diff --git a/libmproxy/console/__init__.py b/libmproxy/console/__init__.py
index 6aabf5ed..0db06832 100644
--- a/libmproxy/console/__init__.py
+++ b/libmproxy/console/__init__.py
@@ -499,38 +499,33 @@ class ConsoleMaster(flow.FlowMaster):
self.view_flowlist()
def _readflow(self, paths):
+ """
+ Utitility function that reads a list of flows
+ or prints an error to the UI if that fails.
+ Returns
+ - None, if there was an error.
+ - a list of flows, otherwise.
+ """
try:
- flows = []
- for path in paths:
- path = os.path.expanduser(path)
- with file(path, "rb") as f:
- flows.extend(list(flow.FlowReader(f).stream()))
- except (IOError, flow.FlowReadError), v:
- return True, v.strerror
- return False, flows
-
- def client_playback_path(self, path):
- err, ret = self._readflow(path)
- if err:
+ return flow.read_flows_from_paths(paths)
+ except flow.FlowReadError as e:
if not self.statusbar:
- print >> sys.stderr, ret
+ print >> sys.stderr, e.strerror
sys.exit(1)
else:
- self.statusbar.message(ret)
- else:
- self.start_client_playback(ret, False)
+ self.statusbar.message(e.strerror)
+ return None
+
+ def client_playback_path(self, path):
+ flows = self._readflow(path)
+ if flows:
+ self.start_client_playback(flows, False)
def server_playback_path(self, path):
- err, ret = self._readflow(path)
- if err:
- if not self.statusbar:
- print >> sys.stderr, ret
- sys.exit(1)
- else:
- self.statusbar.message(ret)
- else:
+ flows = self._readflow(path)
+ if flows:
self.start_server_playback(
- ret,
+ flows,
self.killextra, self.rheaders,
False, self.nopop,
self.options.replay_ignore_params, self.options.replay_ignore_content, self.options.replay_ignore_payload_params