diff options
author | François Schmidts <francois.schmidts@gmail.com> | 2015-07-31 13:20:55 +0200 |
---|---|---|
committer | François Schmidts <francois.schmidts@gmail.com> | 2015-07-31 13:20:55 +0200 |
commit | 4ad1b29d831633de1430a683c4ad37873007d34c (patch) | |
tree | 7b8a14a4a913b1d862da76587e20edcfe6f521f9 /pyaggr3g470r/lib | |
parent | adding munin probes (diff) | |
download | newspipe-4ad1b29d831633de1430a683c4ad37873007d34c.tar.gz newspipe-4ad1b29d831633de1430a683c4ad37873007d34c.tar.bz2 newspipe-4ad1b29d831633de1430a683c4ad37873007d34c.zip |
redoing the etag matching mechanism
Diffstat (limited to 'pyaggr3g470r/lib')
-rw-r--r-- | pyaggr3g470r/lib/view_utils.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/pyaggr3g470r/lib/view_utils.py b/pyaggr3g470r/lib/view_utils.py new file mode 100644 index 00000000..fa5e1eec --- /dev/null +++ b/pyaggr3g470r/lib/view_utils.py @@ -0,0 +1,20 @@ +from functools import wraps +from flask import request, Response, make_response +from pyaggr3g470r.lib.utils import to_hash + + +def etag_match(func): + @wraps(func) + def wrapper(*args, **kwargs): + response = func(*args, **kwargs) + if not type(response) is str: + return response + etag = to_hash(response) + if request.headers.get('if-none-match') == etag: + response = Response(status=304, headers={'etag': etag, + 'Cache-Control': 'pragma: no-cache'}) + else: + response = make_response(response) + response.headers['etag'] = etag + return response + return wrapper |