X-Git-Url: http://dolda2000.com/gitweb/?p=wrw.git;a=blobdiff_plain;f=wrw%2Freq.py;fp=wrw%2Freq.py;h=0d26964450968b2e4de69bd9b8876b28849d01d8;hp=f3dc31f10d93528d639f423b5f4e976145ef2971;hb=0a59819dcc209fe5c672f4784088ee44c8f6b6c0;hpb=79a8b95a4716a2a9b140f86989e27954a3253bae diff --git a/wrw/req.py b/wrw/req.py index f3dc31f..0d26964 100644 --- a/wrw/req.py +++ b/wrw/req.py @@ -50,6 +50,16 @@ def fixcase(str): return str class request(object): + def copy(self): + return copyrequest(self) + + def shift(self, n): + new = self.copy() + new.uriname = self.uriname + self.pathinfo[:n] + new.pathinfo = self.pathinfo[n:] + return new + +class origrequest(request): def __init__(self, env): self.env = env self.uriname = env["SCRIPT_NAME"] @@ -117,3 +127,37 @@ class request(object): for val in self.ohead.getlist(nm): hdrs.append((nm, val)) startreq("%s %s" % self.statuscode, hdrs) + + def topreq(self): + return self + +class copyrequest(request): + def __init__(self, p): + self.parent = p + self.top = p.topreq() + self.env = p.env + self.uriname = p.uriname + self.filename = p.filename + self.uri = p.uri + self.pathinfo = p.pathinfo + self.query = p.query + self.remoteaddr = p.remoteaddr + self.serverport = p.serverport + self.https = p.https + self.ihead = p.ihead + self.ohead = p.ohead + + def status(self, code, msg): + return self.parent.status(code, msg) + + def item(self, id): + return self.top.item(id) + + def withres(self, res): + return self.top.withres(res) + + def oncommit(self, fn): + return self.top.oncommit(fn) + + def topreq(self): + return self.parent.topreq()