summaryrefslogtreecommitdiffstats
path: root/devtools/client/debugger/test/mochitest/examples/sjs_slow-load.sjs
blob: 7fb93800b1cb8302084000128aa8b49a540dbfb4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

/* exported handleRequest */

"use strict";

function handleRequest(request, response) {
  const { scheme, host, path, queryString } = request;
  const params = queryString.split("&").reduce((acc, item) => {
    const [key, value] = item.split("=");
    acc[key] = value;
    return acc;
  }, {});

  const basePath = path.substr(0, path.lastIndexOf("/") + 1);
  const redirectURL = `${scheme}://${host}${basePath}/${params.file}`;
  const delayMs = params.delay ? parseInt(params.delay) : 2000;

  // SJS code doesn't have a setTimeout so we just busy-loop...
  const start = Date.now();
  while (Date.now() < start + delayMs) continue;

  response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
  response.setHeader("Pragma", "no-cache");
  response.setHeader("Expires", "0");
  response.setHeader("Access-Control-Allow-Origin", "*", false);

  response.setStatusLine(request.httpVersion, 302, "Found");
  response.setHeader("Location", redirectURL);
}