--- 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)