Mercurial > hg > wordstream
view wordstream/factory.py @ 3:e21f53582267
adding final dissociation stuff
author | k0s <k0scist@gmail.com> |
---|---|
date | Fri, 12 Feb 2010 01:37:38 -0500 |
parents | 8af3412e907a |
children |
line wrap: on
line source
import os from dispatcher import Dispatcher from dispatcher import Scrambler from paste.httpexceptions import HTTPExceptionHandler from paste.urlparser import StaticURLParser from pkg_resources import resource_filename class PassthroughFileserver(object): """serve files if they exist""" def __init__(self, app, directory): self.app = app self.directory = directory self.fileserver = StaticURLParser(self.directory) def __call__(self, environ, start_response): path = environ['PATH_INFO'].strip('/') if path and os.path.exists(os.path.join(self.directory, path)): return self.fileserver(environ, start_response) return self.app(environ, start_response) def factory(global_conf, **app_conf): """create a webob view and wrap it in middleware""" keystr = 'wordstream.' args = dict([(key.split(keystr, 1)[-1], value) for key, value in app_conf.items() if key.startswith(keystr) ]) app = Dispatcher(**args) return HTTPExceptionHandler(PassthroughFileserver(app, resource_filename(__name__, 'static'))) def dissociate_factory(global_conf, **app_conf): keystr = 'dissociate.' args = dict([(key.split(keystr, 1)[-1], value) for key, value in app_conf.items() if key.startswith(keystr) ]) app = Scrambler(**args) return HTTPExceptionHandler(app)