Merge branch 'master' into jython
[wrw.git] / wrw / proto.py
index aed5c4e..8474b3a 100644 (file)
@@ -1,3 +1,5 @@
+import time
+
 statusinfo = {
     400: ("Bad Request", "Invalid HTTP request."),
     401: ("Unauthorized", "Authentication must be provided for the requested resource."),
@@ -113,7 +115,7 @@ def parseurl(url):
         local = local[:q]
     return proto, host, local, query
 
-def consurl(proto, host, local, query = ""):
+def consurl(proto, host, local, query=""):
     if len(local) < 1 and local[0] != '/':
         raise urlerror("Local part of URL must begin with a slash")
     ret = "%s://%s%s" % (proto, host, local)
@@ -131,18 +133,28 @@ def appendurl(url, other):
         p = local.rfind('/')
         return consurl(proto, host, local[:p + 1] + other)
 
-def requrl(req):
+def siteurl(req):
     host = req.ihead.get("Host", None)
     if host is None:
         raise Exception("Could not reconstruct URL because no Host header was sent")
     proto = "http"
     if req.https:
         proto = "https"
+    return "%s://%s/" % (proto, host)
+
+def scripturl(req):
+    s = siteurl(req)
+    if req.uriname[0] != '/':
+        raise Exception("Malformed local part when reconstructing URL")
+    return siteurl(req) + req.uriname[1:]
+
+def requrl(req):
+    s = siteurl(req)
     if req.uri[0] != '/':
         raise Exception("Malformed local part when reconstructing URL")
-    return "%s://%s%s" % (proto, host, req.uri)
+    return siteurl(req) + req.uri[1:]
 
-def parstring(pars = {}, **augment):
+def parstring(pars={}, **augment):
     buf = ""
     for key in pars:
         if key in augment:
@@ -157,7 +169,7 @@ def parstring(pars = {}, **augment):
         buf += urlq(key) + "=" + urlq(str(augment[key]))
     return buf
 
-def parurl(url, pars = {}, **augment):
+def parurl(url, pars={}, **augment):
     qs = parstring(pars, **augment)
     if qs != "":
         return url + "?" + qs