Add base class for Meddleware
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Fri, 25 Nov 2011 21:16:18 +0000 (22:16 +0100)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Fri, 25 Nov 2011 21:16:18 +0000 (22:16 +0100)
Created a BaseMeddleware which all Meddleware should derive
from. This is not strictly needed, but will greatly help.

The base class has the common __init__ of all the other
Meddlwares and fall backs for all hooks. That way a new
Meddlware only needs to override what it actually wants to
implement.

mediagoblin/meddleware/__init__.py
mediagoblin/meddleware/csrf.py
mediagoblin/meddleware/noop.py
mediagoblin/tests/tools.py

index 3addc937f92ef87262a8b8e007cbcd3eee7002c1..729a020d12e81b35b5ff84bb3483c5d487ac8b2c 100644 (file)
@@ -18,3 +18,15 @@ ENABLED_MEDDLEWARE = (
     'mediagoblin.meddleware.noop:NoOpMeddleware',
     'mediagoblin.meddleware.csrf:CsrfMeddleware',
     )
+
+
+class BaseMeddleware(object):
+
+    def __init__(self, mg_app):
+        self.app = mg_app
+
+    def process_request(self, request):
+        pass
+
+    def process_response(self, request, response):
+        pass
index 051afe586a15c0b9a6ec3fe37ea938fa70cff3ee..ca2eca5fe6665af9f8af3753daab8a41c8639dc6 100644 (file)
@@ -21,6 +21,7 @@ from webob.exc import HTTPForbidden
 from wtforms import Form, HiddenField, validators
 
 from mediagoblin import mg_globals
+from mediagoblin.meddleware import BaseMeddleware
 
 # Use the system (hardware-based) random number generator if it exists.
 # -- this optimization is lifted from Django
@@ -47,7 +48,7 @@ def render_csrf_form_token(request):
     return form.csrf_token
 
 
-class CsrfMeddleware(object):
+class CsrfMeddleware(BaseMeddleware):
     """CSRF Protection Meddleware
 
     Adds a CSRF Cookie to responses and verifies that it is present
@@ -57,9 +58,6 @@ class CsrfMeddleware(object):
     CSRF_KEYLEN = 64
     SAFE_HTTP_METHODS = ("GET", "HEAD", "OPTIONS", "TRACE")
 
-    def __init__(self, mg_app):
-        self.app = mg_app
-
     def process_request(self, request):
         """For non-safe requests, confirm that the tokens are present
         and match.
index d11a5b9e51c503ecf6e71d0a6a5212c8c2f4b422..b43053de15dfcbb92107be928e0945197778adc0 100644 (file)
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
-class NoOpMeddleware(object):
+from mediagoblin.meddleware import BaseMeddleware
 
-    def __init__(self, mg_app):
-        self.app = mg_app
 
+class NoOpMeddleware(BaseMeddleware):
     def process_request(self, request):
         pass
 
index 1a26c6e94a5368374d54d21be1965d595635463d..01813e96ea4887e4882a1d2a87e755fd1fa2e993 100644 (file)
@@ -26,6 +26,7 @@ from mediagoblin.tools import testing
 from mediagoblin.init.config import read_mediagoblin_config
 from mediagoblin.decorators import _make_safe
 from mediagoblin.db.open import setup_connection_and_db_from_config
+from mediagoblin.meddleware import BaseMeddleware
 
 
 MEDIAGOBLIN_TEST_DB_NAME = u'__mediagoblin_tests__'
@@ -50,7 +51,7 @@ $ CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_tests ./bin/nosetests"""
 class BadCeleryEnviron(Exception): pass
 
 
-class TestingMeddleware(object):
+class TestingMeddleware(BaseMeddleware):
     """
     Meddleware for the Unit tests
     
@@ -69,12 +70,6 @@ class TestingMeddleware(object):
     create a new method and call it from process_*.
     """
 
-    def __init__(self, mg_app):
-        self.app = mg_app
-
-    def process_request(self, request):
-        pass
-
     def process_response(self, request, response):
         # All following tests should be for html only!
         if response.content_type != "text/html":