Issue 680: Dispatch meddleware request processing post-routing
authorNathan Yergler <nathan@yergler.net>
Sat, 26 Nov 2011 22:34:36 +0000 (14:34 -0800)
committerNathan Yergler <nathan@yergler.net>
Sat, 26 Nov 2011 22:34:36 +0000 (14:34 -0800)
mediagoblin/app.py
mediagoblin/meddleware/__init__.py
mediagoblin/meddleware/csrf.py
mediagoblin/meddleware/noop.py

index aafadd977bdb78e3248792b85c05fdb4eef5103e..7f087ed93e454e2d3ee78f330204022c8be8503e 100644 (file)
@@ -107,12 +107,6 @@ class MediaGoblinApp(object):
     def __call__(self, environ, start_response):
         request = Request(environ)
 
-        # pass the request through our meddleware classes
-        for m in self.meddleware:
-            response = m.process_request(request)
-            if response is not None:
-                return response(environ, start_response)
-
         ## Routing / controller loading stuff
         path_info = request.path_info
         route_match = self.routing.match(path_info)
@@ -164,6 +158,13 @@ class MediaGoblinApp(object):
             return render_404(request)(environ, start_response)
 
         controller = common.import_component(route_match['controller'])
+
+        # pass the request through our meddleware classes
+        for m in self.meddleware:
+            response = m.process_request(request, controller)
+            if response is not None:
+                return response(environ, start_response)
+
         request.start_response = start_response
 
         # get the response from the controller
index 729a020d12e81b35b5ff84bb3483c5d487ac8b2c..7ba70d873e511131b08e081dfb6e74e90abb2af0 100644 (file)
@@ -25,7 +25,7 @@ class BaseMeddleware(object):
     def __init__(self, mg_app):
         self.app = mg_app
 
-    def process_request(self, request):
+    def process_request(self, request, controller):
         pass
 
     def process_response(self, request, response):
index ca2eca5fe6665af9f8af3753daab8a41c8639dc6..961fa7a6132ba42d96ed9916c75be2e5c20503b1 100644 (file)
@@ -58,7 +58,7 @@ class CsrfMeddleware(BaseMeddleware):
     CSRF_KEYLEN = 64
     SAFE_HTTP_METHODS = ("GET", "HEAD", "OPTIONS", "TRACE")
 
-    def process_request(self, request):
+    def process_request(self, request, controller):
         """For non-safe requests, confirm that the tokens are present
         and match.
         """
index b43053de15dfcbb92107be928e0945197778adc0..f5376494a043997ea870201e7d5c7b3c022e8879 100644 (file)
@@ -19,7 +19,8 @@ from mediagoblin.meddleware import BaseMeddleware
 
 
 class NoOpMeddleware(BaseMeddleware):
-    def process_request(self, request):
+
+    def process_request(self, request, controller):
         pass
 
     def process_response(self, request, response):