0
|
1 """
|
|
2 request dispatcher
|
|
3 """
|
|
4
|
|
5 import os
|
|
6 from handlers import Get, Post
|
|
7 from webob import Request, exc
|
|
8
|
|
9 class Dispatcher(object):
|
|
10
|
|
11 ### class level variables
|
|
12 defaults = { 'directory': None}
|
|
13
|
|
14 def __init__(self, **kw):
|
|
15 for key in self.defaults:
|
|
16 setattr(self, key, kw.get(key, self.defaults[key]))
|
|
17 self.handlers = [ Get, Post ]
|
|
18 assert os.path.exists(self.directory)
|
|
19
|
|
20 ### methods dealing with HTTP
|
|
21 def __call__(self, environ, start_response):
|
|
22 request = Request(environ)
|
|
23 for h in self.handlers:
|
|
24 if h.match(request):
|
|
25 handler = h(self, request)
|
|
26 break
|
|
27 else:
|
|
28 handler = exc.HTTPNotFound
|
|
29 res = handler()
|
|
30 return res(environ, start_response)
|