tests/get-with-headers.py
branchstable
changeset 1052 5a3bcda2de29
parent 1051 5b75af0ca224
child 1053 ede95d3a1f27
--- a/tests/get-with-headers.py	Wed Apr 14 17:58:10 2010 +0900
+++ b/tests/get-with-headers.py	Wed Sep 08 15:11:35 2010 +0200
@@ -12,18 +12,40 @@
 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
+
+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, 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)