etags in api preview
This commit is contained in:
parent
e7f0a00df9
commit
968fc3885d
3 changed files with 4 additions and 15 deletions
|
@ -1,13 +0,0 @@
|
|||
class RemoveEtagFromHTMLApiViewMiddleware:
|
||||
def __init__(self, get_response):
|
||||
self.get_response = get_response
|
||||
|
||||
def __call__(self, request):
|
||||
response = self.get_response(request)
|
||||
|
||||
if request.path.startswith('/api/'):
|
||||
if response.has_header('content-type') and response['content-type'].startswith('text/html'):
|
||||
if response.has_header('etag'):
|
||||
del response['etag']
|
||||
|
||||
return response
|
|
@ -40,7 +40,10 @@ def api_etag(permissions=True, etag_func=AccessPermission.etag_func, cache_param
|
|||
def wrapper(func):
|
||||
@wraps(func)
|
||||
def wrapped_func(self, request, *args, **kwargs):
|
||||
raw_etag = get_language()+':'+(etag_func(request) if permissions else MapUpdate.current_cache_key())
|
||||
response_format = self.perform_content_negotiation(request)[0].format
|
||||
etag_user = (':'+str(request.user.pk or 0)) if response_format == 'api' else ''
|
||||
raw_etag = '%s%s:%s:%s' % (response_format, etag_user, get_language(),
|
||||
(etag_func(request) if permissions else MapUpdate.current_cache_key()))
|
||||
etag = quote_etag(raw_etag)
|
||||
|
||||
response = get_conditional_response(request, etag=etag)
|
||||
|
|
|
@ -202,7 +202,6 @@ MIDDLEWARE = [
|
|||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
'c3nav.api.middleware.RemoveEtagFromHTMLApiViewMiddleware'
|
||||
]
|
||||
|
||||
with suppress(ImportError):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue