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