diff -r a0451f80f665 -r 671c1a0be907 tests/get-with-headers.py --- a/tests/get-with-headers.py Sat Feb 11 14:18:19 2012 +0000 +++ b/tests/get-with-headers.py Sat Mar 31 17:14:32 2012 +0100 @@ -3,7 +3,7 @@ """This does HTTP GET requests given a host:port and path and returns a subset of the headers plus the body of the result.""" -import httplib, sys, re +import httplib, sys try: import msvcrt, os @@ -12,18 +12,42 @@ except ImportError: pass -headers = [h.lower() for h in sys.argv[3:]] -conn = httplib.HTTPConnection(sys.argv[1]) -conn.request("GET", sys.argv[2]) -response = conn.getresponse() -print response.status, response.reason -for h in headers: - if response.getheader(h, None) is not None: - print "%s: %s" % (h, response.getheader(h)) -print -data = response.read() -sys.stdout.write(data) +twice = False +if '--twice' in sys.argv: + sys.argv.remove('--twice') + twice = True + +reasons = {'Not modified': 'Not Modified'} # python 2.4 + +tag = None +def request(host, path, show): + + global tag + headers = {} + if tag: + headers['If-None-Match'] = tag -if 200 <= response.status <= 299: + conn = httplib.HTTPConnection(host) + conn.request("GET", path, None, headers) + response = conn.getresponse() + print response.status, reasons.get(response.reason, response.reason) + for h in [h.lower() for h in show]: + if response.getheader(h, None) is not None: + print "%s: %s" % (h, response.getheader(h)) + + print + data = response.read() + sys.stdout.write(data) + + if twice and response.getheader('ETag', None): + tag = response.getheader('ETag') + + return response.status + +status = request(sys.argv[1], sys.argv[2], sys.argv[3:]) +if twice: + status = request(sys.argv[1], sys.argv[2], sys.argv[3:]) + +if 200 <= status <= 305: sys.exit(0) sys.exit(1)