Mercurial > hg > webob_view
view webob_view/template/+package+/dispatcher.py @ 5:f70d8f3aee51
allow app argument to allow use as middleware OOTB
author | k0s <k0scist@gmail.com> |
---|---|
date | Sun, 27 Dec 2009 16:38:50 -0500 |
parents | 4dcb932065e4 |
children |
line wrap: on
line source
""" request dispatcher """ from handlers import Get, Post from webob import Request, exc class Dispatcher(object): ### class level variables defaults = { 'app': None} def __init__(self, **kw): for key in self.defaults: setattr(self, key, kw.get(key, self.defaults[key])) self.handlers = [ Get, Post ] if self.app: assert hasattr(self.app, '__call__') ### methods dealing with HTTP def __call__(self, environ, start_response): request = Request(environ) for h in self.handlers: if h.match(request): handler = h(request) break else: if self.app: return self.app(environ, start_response) handler = exc.HTTPNotFound res = handler() return res(environ, start_response)