Mercurial > hg > simpypi
comparison simpypi/wsgi.py @ 14:7f426a77e192
mv dispatcher to wsgi
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Tue, 28 Feb 2012 14:45:50 -0800 |
parents | simpypi/dispatcher.py@1cdb25cef7ee |
children | 90777e79ea13 |
comparison
equal
deleted
inserted
replaced
13:fc44434040e5 | 14:7f426a77e192 |
---|---|
1 """ | |
2 request dispatcher: | |
3 data persisting across requests should go here | |
4 """ | |
5 | |
6 import os | |
7 #from handlers import Index | |
8 from webob import Request, Response, exc | |
9 | |
10 here = os.path.dirname(os.path.abspath(__file__)) | |
11 | |
12 class Dispatcher(object): | |
13 | |
14 ### class level variables | |
15 defaults = {'auto_reload': 'False', | |
16 'template_dirs': '', | |
17 } | |
18 | |
19 def __init__(self, directory, index=None): | |
20 | |
21 self.directory = directory | |
22 assert os.path.exists(directory) | |
23 | |
24 # set instance parameters from kw and defaults | |
25 # XXX unneeded for now | |
26 # for key in self.defaults: | |
27 # setattr(self, key, kw.get(key, self.defaults[key])) | |
28 # self.auto_reload = self.auto_reload.lower() == 'true' | |
29 | |
30 # request handlers | |
31 self.handlers = dict([(method, getattr(self, method)) | |
32 for method in ('GET', 'POST')]) | |
33 # XXX unneeded for now | |
34 # self.handlers = [ Index ] | |
35 | |
36 # cache index HTML | |
37 self.index = index or os.path.join(here, 'templates', 'index.html') | |
38 assert os.path.exists(self.index) | |
39 self.index = file(self.index).read() | |
40 | |
41 # template directories | |
42 # self.template_dirs = self.template_dirs.split() | |
43 # self.template_dirs = [os.path.join(here, 'templates')] | |
44 | |
45 def __call__(self, environ, start_response): | |
46 | |
47 # get a request object | |
48 request = Request(environ) | |
49 | |
50 # get the path | |
51 # path = request.path_info.strip('/').split('/') | |
52 # if path == ['']: | |
53 # path = [] | |
54 # request.environ['path'] = path | |
55 | |
56 # match the request to a handler | |
57 handler = self.handlers.get(request.method) | |
58 if handler: | |
59 res = handler(request) | |
60 else: | |
61 res = exc.HTTPNotFound() | |
62 # for h in self.handlers: | |
63 # handler = h.match(self, request) | |
64 # if handler is not None: | |
65 # break | |
66 # else: | |
67 # handler = exc.HTTPNotFound | |
68 | |
69 # get response | |
70 # res = handler() | |
71 return res(environ, start_response) | |
72 | |
73 def GET(self, request): | |
74 return Response(body=self.index, content_type='text/html') | |
75 | |
76 def POST(self, request): | |
77 """handle posting a package""" | |
78 | |
79 # get the package | |
80 package = self.request.POST.get('package') | |
81 | |
82 # redirect to the main page | |
83 # TODO | |
84 # self.redirect(self.link(self.handler_path)) |