summaryrefslogtreecommitdiff
path: root/repoze/bfg/wsgiadapter.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-07-07 04:44:57 +0000
committerChris McDonough <chrism@agendaless.com>2008-07-07 04:44:57 +0000
commit7de404bb4af2744a64c13e31a780fc0229b8f9e5 (patch)
tree49f0b91b005777071050bf72732300f3bcd8d3ad /repoze/bfg/wsgiadapter.py
parent93a4f5df2f74e4cbefc70733f2c0258859207106 (diff)
downloadpyramid-7de404bb4af2744a64c13e31a780fc0229b8f9e5.tar.gz
pyramid-7de404bb4af2744a64c13e31a780fc0229b8f9e5.tar.bz2
pyramid-7de404bb4af2744a64c13e31a780fc0229b8f9e5.zip
Look up a view after traversal; adapt it to IWSGIApplication.
Diffstat (limited to 'repoze/bfg/wsgiadapter.py')
-rw-r--r--repoze/bfg/wsgiadapter.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/repoze/bfg/wsgiadapter.py b/repoze/bfg/wsgiadapter.py
new file mode 100644
index 000000000..f76360c27
--- /dev/null
+++ b/repoze/bfg/wsgiadapter.py
@@ -0,0 +1,29 @@
+from zope.interface import implements
+from zope.interface import classProvides
+
+from repoze.bfg.interfaces import IWSGIApplicationFactory
+from repoze.bfg.interfaces import IWSGIApplication
+from repoze.bfg.mapply import mapply
+
+class NaiveWSGIViewAdapter:
+ classProvides(IWSGIApplicationFactory)
+ implements(IWSGIApplication)
+
+ def __init__(self, view, request):
+ self.view = view
+ self.request = request
+
+ def __call__(self, environ, start_response):
+ catch_response = []
+ def replace_start_response(status, headers):
+ catch_response[:] = (status, headers)
+ kwdict = {
+ 'request':self.request,
+ 'environ':environ,
+ 'start_response':start_response,
+ }
+ response = mapply(self.view, positional = (), keyword = kwdict)
+ if not catch_response:
+ catch_response = (response.status, response.headerlist)
+ start_response(*catch_response)
+ return response.app_iter