From dc7e5d54e72fd9a22f1509df0c7bbf05f8db8924 Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Fri, 27 May 2011 08:16:22 +0200 Subject: [PATCH] Added a resp module with basic response restarts. --- wrw/resp.py | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 wrw/resp.py diff --git a/wrw/resp.py b/wrw/resp.py new file mode 100644 index 0000000..030d5ee --- /dev/null +++ b/wrw/resp.py @@ -0,0 +1,72 @@ +import dispatch, proto + +__all__ = ["skeleton", "skelfor", "setskel", "usererror"] + +class skeleton(object): + def page(self, title, content): + return """ + + + +%s + + +%s + +""" % (self.head(title), content) + + def skel(self, title): + return """%s\n%s""" % (title, self.style()) + + def style(self): + return "" + + def error(self, message, detail): + return self.page(message, """

%s

\n

%s

\n""" % (message, detail)) + + def message(self, message, detail): + return self.page(message, """

%s

\n

%s

\n""" % (message, detail)) + +defskel = skeleton() + +def getskel(req): + return [defskel] +def skelfor(req): + return req.item(getskel)[0] +def setskel(req, skel): + req.item(getskel)[0] = skel + +class usererror(dispatch.restart): + def __init__(self, message, detail): + super(usererror, self).__init__() + self.message = message + self.detail = detail + + def handle(self, req): + return [skelfor(req).error(self.message, self.detail)] + +class message(dispatch.restart): + def __init__(self, message, detail): + super(message, self).__init__() + self.message = message + self.detail = detail + + def handle(self, req): + return [skelfor(req).message(self.message, self.detail)] + +class httperror(usererror): + def __init__(self, status, message = None, detail = None): + if message is None: + message = proto.statusinfo[status][0] + if detail is None: + detail = proto.statusinfo[status][1] + super(httperror, self).__init__(message, detail) + self.status = status + + def handle(self, req): + req.status(self.status, self.message) + super(httperror, self).handle(req) + +class notfound(httperror): + def __init__(self): + super(notfound, self).__init__(404) -- 2.11.0