comparison 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
comparison
equal deleted inserted replaced
0:827f7577f940 1:a02c4fcd7001
7 from webob import Request, exc 7 from webob import Request, exc
8 8
9 class Dispatcher(object): 9 class Dispatcher(object):
10 10
11 ### class level variables 11 ### class level variables
12 defaults = { 'directory': None} 12 defaults = { 'directory': None,
13 'auth': 'False' }
13 14
14 def __init__(self, **kw): 15 def __init__(self, **kw):
15 for key in self.defaults: 16 for key in self.defaults:
16 setattr(self, key, kw.get(key, self.defaults[key])) 17 setattr(self, key, kw.get(key, self.defaults[key]))
17 self.handlers = [ Get, Post ] 18 self.handlers = [ Get, Post ]
18 assert os.path.exists(self.directory) 19 assert os.path.exists(self.directory)
20 self.auth = self.auth.lower() == 'true'
19 21
20 ### methods dealing with HTTP 22 ### methods dealing with HTTP
21 def __call__(self, environ, start_response): 23 def __call__(self, environ, start_response):
22 request = Request(environ) 24 request = Request(environ)
25 if self.auth and not request.remote_user:
26 return exc.HTTPUnauthorized()(environ, start_response)
23 for h in self.handlers: 27 for h in self.handlers:
24 if h.match(request): 28 if h.match(request):
25 handler = h(self, request) 29 handler = h(self, request)
26 break 30 break
27 else: 31 else: