Mercurial > hg > uploader
view uploader/dispatcher.py @ 1:a02c4fcd7001
* optionally require auth
* give a real version
author | k0s <k0scist@gmail.com> |
---|---|
date | Sun, 27 Dec 2009 13:29:27 -0500 |
parents | 827f7577f940 |
children | 0b5fce452087 |
line wrap: on
line source
""" request dispatcher """ import os from handlers import Get, Post from webob import Request, exc class Dispatcher(object): ### class level variables defaults = { 'directory': None, 'auth': 'False' } def __init__(self, **kw): for key in self.defaults: setattr(self, key, kw.get(key, self.defaults[key])) self.handlers = [ Get, Post ] assert os.path.exists(self.directory) self.auth = self.auth.lower() == 'true' ### methods dealing with HTTP def __call__(self, environ, start_response): request = Request(environ) if self.auth and not request.remote_user: return exc.HTTPUnauthorized()(environ, start_response) for h in self.handlers: if h.match(request): handler = h(self, request) break else: handler = exc.HTTPNotFound res = handler() return res(environ, start_response)