Add base class for Meddleware
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.
This commit is contained in:
parent
1b7662012f
commit
56dc1c9d3e
@ -18,3 +18,15 @@ ENABLED_MEDDLEWARE = (
|
|||||||
'mediagoblin.meddleware.noop:NoOpMeddleware',
|
'mediagoblin.meddleware.noop:NoOpMeddleware',
|
||||||
'mediagoblin.meddleware.csrf:CsrfMeddleware',
|
'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
|
||||||
|
@ -21,6 +21,7 @@ from webob.exc import HTTPForbidden
|
|||||||
from wtforms import Form, HiddenField, validators
|
from wtforms import Form, HiddenField, validators
|
||||||
|
|
||||||
from mediagoblin import mg_globals
|
from mediagoblin import mg_globals
|
||||||
|
from mediagoblin.meddleware import BaseMeddleware
|
||||||
|
|
||||||
# Use the system (hardware-based) random number generator if it exists.
|
# Use the system (hardware-based) random number generator if it exists.
|
||||||
# -- this optimization is lifted from Django
|
# -- this optimization is lifted from Django
|
||||||
@ -47,7 +48,7 @@ def render_csrf_form_token(request):
|
|||||||
return form.csrf_token
|
return form.csrf_token
|
||||||
|
|
||||||
|
|
||||||
class CsrfMeddleware(object):
|
class CsrfMeddleware(BaseMeddleware):
|
||||||
"""CSRF Protection Meddleware
|
"""CSRF Protection Meddleware
|
||||||
|
|
||||||
Adds a CSRF Cookie to responses and verifies that it is present
|
Adds a CSRF Cookie to responses and verifies that it is present
|
||||||
@ -57,9 +58,6 @@ class CsrfMeddleware(object):
|
|||||||
CSRF_KEYLEN = 64
|
CSRF_KEYLEN = 64
|
||||||
SAFE_HTTP_METHODS = ("GET", "HEAD", "OPTIONS", "TRACE")
|
SAFE_HTTP_METHODS = ("GET", "HEAD", "OPTIONS", "TRACE")
|
||||||
|
|
||||||
def __init__(self, mg_app):
|
|
||||||
self.app = mg_app
|
|
||||||
|
|
||||||
def process_request(self, request):
|
def process_request(self, request):
|
||||||
"""For non-safe requests, confirm that the tokens are present
|
"""For non-safe requests, confirm that the tokens are present
|
||||||
and match.
|
and match.
|
||||||
|
@ -15,11 +15,10 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# 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):
|
def process_request(self, request):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@ from mediagoblin.tools import testing
|
|||||||
from mediagoblin.init.config import read_mediagoblin_config
|
from mediagoblin.init.config import read_mediagoblin_config
|
||||||
from mediagoblin.decorators import _make_safe
|
from mediagoblin.decorators import _make_safe
|
||||||
from mediagoblin.db.open import setup_connection_and_db_from_config
|
from mediagoblin.db.open import setup_connection_and_db_from_config
|
||||||
|
from mediagoblin.meddleware import BaseMeddleware
|
||||||
|
|
||||||
|
|
||||||
MEDIAGOBLIN_TEST_DB_NAME = u'__mediagoblin_tests__'
|
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 BadCeleryEnviron(Exception): pass
|
||||||
|
|
||||||
|
|
||||||
class TestingMeddleware(object):
|
class TestingMeddleware(BaseMeddleware):
|
||||||
"""
|
"""
|
||||||
Meddleware for the Unit tests
|
Meddleware for the Unit tests
|
||||||
|
|
||||||
@ -69,12 +70,6 @@ class TestingMeddleware(object):
|
|||||||
create a new method and call it from process_*.
|
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):
|
def process_response(self, request, response):
|
||||||
# All following tests should be for html only!
|
# All following tests should be for html only!
|
||||||
if response.content_type != "text/html":
|
if response.content_type != "text/html":
|
||||||
|
Loading…
x
Reference in New Issue
Block a user