from wsgidispatcher import Dispatcher from view import admin as view import config import cgi class AuthMiddleware: def __init__(self, app): self.app = app def __call__(self, environ, start_response): # check for auth credentials only on the 'right' URIs config.log.info("User: %s" % environ.get('REMOTE_USER', '')) return self.app(environ, start_response) class FieldStorageMiddleware: def __init__(self, app): self.app = app def __call__(self, environ, start_response): if 'content-type' in environ and environ['content-type'].find("x-www-form-urlencoded") >= 0: environ['fieldstorage'] = cgi.FieldStorage() return self.app(environ, start_response) class LoggingMiddleware: def __init__(self, app): self.app = app def __call__(self, environ, start_response): config.log.info("Request: %s" % environ.get('PATH_INFO', '')) return self.app(environ, start_response) urls = Dispatcher() #urls.parser._patterns['alnumdash'] = r'[a-zA-Z0-9\-]+' urls.add('/', GET=view.main) # /service/media/1/;media is the media resource urls.add('/service/[{ctype:alpha}[/[{id}/]]][;{noun}]', _ANY_=view.AppCollection()) urls.add('/comments/[{id}]', _ANY_=view.Comments(False)) urls.add('/{ctype:alpha}/[{id}[/[{slug}]]]', _ANY_=view.AdminCollection()) urls = LoggingMiddleware(urls)