view wsgintegrate/dispatcher.py @ 0:ec815b7cb142

initial commit of wsgintegrate
author Jeff Hammel <jhammel@mozilla.com>
date Tue, 07 Jun 2011 08:03:09 -0700
parents
children 88b611ed2c5e
line wrap: on
line source

"""
multi-application dispatcher for WSGI apps
"""

from webob import Request
from webob import exc

class Dispatcher(object):

  def __init__(self, *apps):
    self.apps = apps
    self.codes = set([404])

  def __call__(self, environ, start_response):
    request = Request(environ)
    for app in self.apps:
      try:
        response = request.get_response(app)
        if response.status_int in self.codes:
          continue
        break
      except exc.HTTPNotFound:
        continue
    else:
      response = exc.HTTPNotFound()
    return response(environ, start_response)