stale-image.py (1265B)
1 import os.path 2 3 from wptserve.utils import isomorphic_decode 4 5 def main(request, response): 6 7 token = request.GET.first(b"token", None) 8 is_query = request.GET.first(b"query", None) != None 9 with request.server.stash.lock: 10 value = request.server.stash.take(token) 11 count = 0 12 if value != None: 13 count = int(value) 14 if is_query: 15 if count < 2: 16 request.server.stash.put(token, count) 17 else: 18 count = count + 1 19 request.server.stash.put(token, count) 20 21 if is_query: 22 headers = [(b"Count", count)] 23 content = b"" 24 return 200, headers, content 25 else: 26 filename = u"green-16x16.png" 27 if count > 1: 28 filename = u"green-256x256.png" 29 30 path = os.path.join(os.path.dirname(isomorphic_decode(__file__)), u"../../../images", filename) 31 body = open(path, "rb").read() 32 33 response.add_required_headers = False 34 response.writer.write_status(200) 35 response.writer.write_header(b"content-length", len(body)) 36 response.writer.write_header(b"Cache-Control", b"private, max-age=0, stale-while-revalidate=60") 37 response.writer.write_header(b"content-type", b"image/png") 38 response.writer.end_headers() 39 40 response.writer.write(body)