diff --git a/plugin-server.py b/plugin-server.py index 02e15d9..0125fb0 100644 --- a/plugin-server.py +++ b/plugin-server.py @@ -13,8 +13,8 @@ then $LOCATION$ gets the value of http://example.com/myplugin import sys import os.path import mimetypes -import hashlib -from base64 import b64encode +import string +import random import redis from flask import Flask, Response, request @@ -56,6 +56,10 @@ def check_cache(full_path): return status +def generate_etag(N=12): + return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(N)) + + @app.route("//") def plugin_file(plugin, path): full_path = "{}/{}".format(plugin, path) @@ -83,12 +87,12 @@ def plugin_file(plugin, path): resp = Response(result, mimetype=mt) resp.headers.add('Access-Control-Allow-Origin', '*') + resp.headers.add('ETag', generate_etag()) resp.status_code = status_code # return everything if cached response is not allowed - if 'Cache-Control' in request.headers: - if request.headers['Cache-Control'] in ('no-cache', 'max-age=0'): - resp.status_code = 200 + if 'If-None-Match' not in request.headers: + resp.status_code = 200 return resp