prefetch-info.py (1565B)
1 import os 2 from wptserve.utils import isomorphic_encode 3 from json import dumps, loads 4 5 def main(request, response): 6 key = request.GET.first(b"key").decode("utf8") 7 mode = request.GET.first(b"mode", "content") 8 status = int(request.GET.first(b"status", b"200")) 9 stash = request.server.stash 10 cors = request.GET.first(b"cors", "true") 11 if cors == "true" or mode == b"info": 12 response.headers.set(b"Access-Control-Allow-Origin", b"*") 13 14 response.status = status 15 with stash.lock: 16 requests = loads(stash.take(key) or '[]') 17 if mode == b"info": 18 response.headers.set(b"Content-Type", "application/json") 19 json_reqs = dumps(requests) 20 response.content = json_reqs 21 stash.put(key, json_reqs) 22 return 23 else: 24 headers = {} 25 for header, value in request.headers.items(): 26 headers[header.decode("utf8")] = value[0].decode("utf8") 27 path = request.url 28 requests.append({"headers": headers, "url": request.url}) 29 stash.put(key, dumps(requests)) 30 31 response.headers.set(b"Content-Type", request.GET.first(b"type", "text/plain")) 32 response.headers.set(b"Cache-Control", request.GET.first(b"cache-control", b"max-age: 604800")) 33 if b"file" in request.GET: 34 path = os.path.join(os.path.dirname(isomorphic_encode(__file__)), os.path.basename(request.GET.first(b"file"))) 35 response.content = open(path, mode=u'rb').read() 36 else: 37 return request.GET.first(b"content", "123")