X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=wrw%2Fproto.py;h=8474b3a16e533b2d1cf702d1f7e5ab40eb07a1e7;hb=refs%2Fheads%2Fjython;hp=ab3737b8f70575c363f93991b659ebaf88f60f59;hpb=3ba5e96caf3d5b25c9dead35c65dd4b9ac694f44;p=wrw.git diff --git a/wrw/proto.py b/wrw/proto.py index ab3737b..8474b3a 100644 --- a/wrw/proto.py +++ b/wrw/proto.py @@ -115,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) @@ -133,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: @@ -158,3 +168,10 @@ def parstring(pars = {}, **augment): if buf != "": buf += "&" buf += urlq(key) + "=" + urlq(str(augment[key])) return buf + +def parurl(url, pars={}, **augment): + qs = parstring(pars, **augment) + if qs != "": + return url + "?" + qs + else: + return url