Source code

Revision control

Copy as Markdown

Other Tools

def main(request, response):
headers = [(b"Content-Type", b"text/javascript")]
values = []
for key in request.cookies:
for cookie in request.cookies.get_list(key):
values.append(b'"%s": "%s"' % (key, cookie.value))
# Update the counter to change the script body for every request to trigger
# update of the service worker.
key = request.GET[b'key']
counter = request.server.stash.take(key)
if counter is None:
counter = 0
counter += 1
request.server.stash.put(key, counter)
body = b"""
// %d
self.addEventListener('message', e => {
e.source.postMessage({%s})
});""" % (counter, b','.join(values))
return headers, body