summaryrefslogtreecommitdiff
path: root/repoze/bfg/router.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-07-05 02:29:54 +0000
committerChris McDonough <chrism@agendaless.com>2008-07-05 02:29:54 +0000
commit79957510964157dae99201b1b6a14ef209bc50f7 (patch)
treead5ff5adbf175ff1905e42eda7f59fd9f532bd4b /repoze/bfg/router.py
parent5ed24b859b1e8deed12f73d1dc1808142218f61e (diff)
downloadpyramid-79957510964157dae99201b1b6a14ef209bc50f7.tar.gz
pyramid-79957510964157dae99201b1b6a14ef209bc50f7.tar.bz2
pyramid-79957510964157dae99201b1b6a14ef209bc50f7.zip
Use WebOb.
Return a NotFound when we can't adapt.
Diffstat (limited to 'repoze/bfg/router.py')
-rw-r--r--repoze/bfg/router.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/repoze/bfg/router.py b/repoze/bfg/router.py
index f37ca0f7c..626080bdc 100644
--- a/repoze/bfg/router.py
+++ b/repoze/bfg/router.py
@@ -1,5 +1,11 @@
-from zope.component import getAdapter
+from zope.component import queryMultiAdapter
+from zope.interface import directlyProvides
+
+from webob import Request
+from webob.exc import HTTPNotFound
+
from repoze.bfg.interfaces import IWSGIApplicationFactory
+from repoze.bfg.interfaces import IWebObRequest
class Router:
def __init__(self, root_policy, traversal_policy):
@@ -10,5 +16,10 @@ class Router:
root = self.root_policy(environ)
context, name, subpath = self.traversal_policy(root, environ)
environ['repoze.bfg.subpath'] = subpath
- app = getAdapter(context, IWSGIApplicationFactory, name=name)
+ request = Request(environ)
+ directlyProvides(request, IWebObRequest)
+ app = queryMultiAdapter((context, request),
+ IWSGIApplicationFactory, name=name)
+ if app is None:
+ app = HTTPNotFound(request.url)
return app(environ, start_response)