Mercurial > hg > MakeItSo
view makeitso/dispatcher.py @ 253:668b0e1f5ce0
introduce failing test: the first step to passing
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sat, 13 May 2017 18:36:01 -0700 |
parents | 1b9573832f33 |
children |
line wrap: on
line source
""" request dispatcher for MakeItSo! """ import sys from handlers import Index from webob import Request, Response, exc class Dispatcher(object): ### class level variables def __init__(self, **kw): # request handlers self.handlers = [ Index ] 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 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) if __name__ == '__main__': from optparse import OptionParser from wsgiref import simple_server # parse command line options parser = OptionParser() parser.add_option('-p', '--port', dest='port', default=8080, type='int', help='port to serve on') options, args = parser.parse_args() # create an app app = Dispatcher() # serve it! server = simple_server.make_server(host=host, port=options.port, app=app) server.serve_forever()