# This serves a different response to each request, to test service worker # updates. If |filename| is provided, it writes that file into the body. # # Usage: # navigator.serviceWorker.register('update_shell.py?filename=worker.js') # # This registers worker.js as a service worker, and every update check # will return a new response. import os import random import time from wptserve.utils import isomorphic_encode def main(request, response): # Set no-cache to ensure the user agent finds a new version for each update. headers = [(b'Cache-Control', b'no-cache, must-revalidate'), (b'Pragma', b'no-cache'), (b'Content-Type', b'application/javascript')] # Return a different script for each access. timestamp = u'// %s %s' % (time.time(), random.random()) body = isomorphic_encode(timestamp) + b'\n' # Inject the file into the response. if b'filename' in request.GET: path = os.path.join(os.path.dirname(isomorphic_encode(__file__)), request.GET[b'filename']) with open(path, 'rb') as f: body += f.read() return headers, body