X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=wrw%2Fresp.py;h=7fae787f81a92c0f4447c81be0ffcdcc042c2265;hb=cbb90a8de3bed03b68b6e537433c6e6d17ff52cb;hp=a27a143f1b04abb60517ae65455a90538237a8bf;hpb=a7b35f84508eb5ab8a890065275e5a0f3bc5bef5;p=wrw.git diff --git a/wrw/resp.py b/wrw/resp.py index a27a143..7fae787 100644 --- a/wrw/resp.py +++ b/wrw/resp.py @@ -42,10 +42,10 @@ class message(dispatch.restart): self.detail = detail def handle(self, req): - return skelfor(req).error(req, self.message, *self.detail) + return skelfor(req).message(req, self.message, *self.detail) class httperror(usererror): - def __init__(self, status, message = None, detail = None): + def __init__(self, status, message=None, detail=None): if message is None: message = proto.statusinfo[status][0] if detail is None: @@ -62,13 +62,25 @@ class notfound(httperror): return super(notfound, self).__init__(404) class redirect(dispatch.restart): - def __init__(self, url, status = 303): + bases = {"url": proto.requrl, + "script": proto.scripturl, + "site": proto.siteurl} + + def __init__(self, url, status=303, base="url"): super(redirect, self).__init__() self.url = url self.status = status + self.bases[base] + self.base = base def handle(self, req): req.status(self.status, "Redirect") - req.ohead["Location"] = proto.appendurl(proto.requrl(req), self.url) + req.ohead["Location"] = proto.appendurl(self.bases[self.base](req), self.url) req.ohead["Content-Length"] = 0 return [] + +class unmodified(dispatch.restart): + def handle(self, req): + req.status(304, "Not Modified") + req.ohead["Content-Length"] = "0" + return []