aboutsummaryrefslogtreecommitdiffstats
path: root/libpathod/pathoc.py
diff options
context:
space:
mode:
Diffstat (limited to 'libpathod/pathoc.py')
-rw-r--r--libpathod/pathoc.py85
1 files changed, 40 insertions, 45 deletions
diff --git a/libpathod/pathoc.py b/libpathod/pathoc.py
index 18c86c5d..40f698fd 100644
--- a/libpathod/pathoc.py
+++ b/libpathod/pathoc.py
@@ -38,7 +38,7 @@ class Pathoc(tcp.TCPClient):
print >> fp, "%s (unprintables escaped):"%header
print >> fp, netlib.utils.cleanBin(data)
- def print_requests(self, reqs, showreq, showresp, explain, hexdump, fp=sys.stdout):
+ def print_request(self, spec, showreq, showresp, explain, hexdump, fp=sys.stdout):
"""
Performs a series of requests, and prints results to the specified
file descriptor.
@@ -49,47 +49,42 @@ class Pathoc(tcp.TCPClient):
explain: Print request explanation
hexdump: When printing requests or responses, use hex dump output
"""
- for i in reqs:
- try:
- r = rparse.parse_request(self.settings, i)
- if showreq:
- self.wfile.start_log()
- req = r.serve(self.wfile, None, self.host)
- if explain:
- print >> fp, ">> ", req["method"], repr(req["path"])
- for a in req["actions"]:
- print >> fp, "\t",
- for x in a:
- print >> fp, x,
- print >> fp
- if showreq:
- self._show(fp, ">> Request", self.wfile.get_log(), hexdump)
- self.wfile.flush()
- if showresp:
- self.rfile.start_log()
- resp = http.read_response(self.rfile, r.method, None)
- except rparse.ParseException, v:
- print >> fp, "Error parsing request spec: %s"%v.msg
- print >> fp, v.marked()
- return
- except rparse.FileAccessDenied, v:
- print >> fp, "File access error: %s"%v
- return
- except http.HttpError, v:
- print >> fp, "<< HTTP Error:", v.msg
- if showresp:
- self._show(fp, "<< Response", self.rfile.get_log(), hexdump)
- return
- except tcp.NetLibTimeout:
- print >> fp, "<<", "Timeout"
- if showresp:
- self._show(fp, "<< Response", self.rfile.get_log(), hexdump)
- return
- except tcp.NetLibDisconnect: # pragma: nocover
- print >> fp, "<<", "Disconnect"
- return
- else:
- if showresp:
- self._show(fp, "<< Response", self.rfile.get_log(), hexdump)
- else:
- self._show_summary(fp, *resp)
+ try:
+ r = rparse.parse_request(self.settings, spec)
+ except rparse.ParseException, v:
+ print >> fp, "Error parsing request spec: %s"%v.msg
+ print >> fp, v.marked()
+ return
+ except rparse.FileAccessDenied, v:
+ print >> fp, "File access error: %s"%v
+ return
+
+ resp = None
+ if showreq:
+ self.wfile.start_log()
+ try:
+ req = r.serve(self.wfile, None, self.host)
+ if explain:
+ print >> fp, ">> ", req["method"], repr(req["path"])
+ for a in req["actions"]:
+ print >> fp, "\t",
+ for x in a:
+ print >> fp, x,
+ print >> fp
+ if showreq:
+ self._show(fp, ">> Request", self.wfile.get_log(), hexdump)
+ self.wfile.flush()
+ if showresp:
+ self.rfile.start_log()
+ resp = http.read_response(self.rfile, r.method, None)
+ except http.HttpError, v:
+ print >> fp, "<< HTTP Error:", v.msg
+ except tcp.NetLibTimeout:
+ print >> fp, "<<", "Timeout"
+ except tcp.NetLibDisconnect: # pragma: nocover
+ print >> fp, "<<", "Disconnect"
+ if showresp:
+ self._show(fp, "<< Response", self.rfile.get_log(), hexdump)
+ else:
+ if resp:
+ self._show_summary(fp, *resp)