1/* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4/* exported handleRequest */ 5 6"use strict"; 7 8function handleRequest(request, response) { 9 const { scheme, host, path, queryString } = request; 10 const params = queryString.split("&").reduce((acc, item) => { 11 const [key, value] = item.split("="); 12 acc[key] = value; 13 return acc; 14 }, {}); 15 16 const basePath = path.substr(0, path.lastIndexOf("/") + 1); 17 const redirectURL = `${scheme}://${host}${basePath}/${params.file}`; 18 const delayMs = params.delay ? parseInt(params.delay) : 2000; 19 20 // SJS code doesn't have a setTimeout so we just busy-loop... 21 const start = Date.now(); 22 while (Date.now() < start + delayMs) continue; 23 24 response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); 25 response.setHeader("Pragma", "no-cache"); 26 response.setHeader("Expires", "0"); 27 response.setHeader("Access-Control-Allow-Origin", "*", false); 28 29 response.setStatusLine(request.httpVersion, 302, "Found"); 30 response.setHeader("Location", redirectURL); 31} 32