Mercurial > hg > simpypi
view simpypi/dispatcher.py @ 11:2bfcba075db0
typo
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Tue, 28 Feb 2012 14:17:20 -0800 |
parents | 3e8597489ea3 |
children | 1cdb25cef7ee |
line wrap: on
line source
""" request dispatcher: data persisting across requests should go here """ import os #from handlers import Index from webob import Request, Response, exc here = os.path.dirname(os.path.abspath(__file__)) class Dispatcher(object): ### class level variables defaults = {'auto_reload': 'False', 'template_dirs': '', 'index': os.path.join(here, 'templates', 'index.html') } def __init__(self, directory, **kw): self.directory = directory assert os.path.exists(directory) # set instance parameters from kw and defaults # XXX unneeded for now # for key in self.defaults: # setattr(self, key, kw.get(key, self.defaults[key])) # self.auto_reload = self.auto_reload.lower() == 'true' # request handlers self.handlers = dict([(method, getattr(self, method)) for method in ('GET', 'POST')]) # XXX unneeded for now # self.handlers = [ Index ] # cache index HTML assert os.path.exists(self.index) self.index = file(self.index).read() # template directories # self.template_dirs = self.template_dirs.split() # self.template_dirs = [os.path.join(here, 'templates')] def __call__(self, environ, start_response): # get a request object request = Request(environ) # get the path # path = request.path_info.strip('/').split('/') # if path == ['']: # path = [] # request.environ['path'] = path # match the request to a handler handler = self.handlers.get(request.method) if handler: res = handler(request) else: res = exc.HTTPNotFound() # for h in self.handlers: # handler = h.match(self, request) # if handler is not None: # break # else: # handler = exc.HTTPNotFound # get response # res = handler() return res(environ, start_response) def GET(self, request): return Response(body=self.index, content_type='text/html') def POST(self, request): """handle posting a package""" # get the package package = self.request.POST.get('package') # redirect to the main page # TODO # self.redirect(self.link(self.handler_path))