michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: const { classes: Cc, interfaces: Ci } = Components; michael@0: michael@0: function handleRequest(request, response) { michael@0: response.processAsync(); michael@0: michael@0: let params = request.queryString.split("&"); michael@0: let status = params.filter((s) => s.contains("sts="))[0].split("=")[1]; michael@0: michael@0: let timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); michael@0: timer.initWithCallback(() => { michael@0: // to avoid garbage collection michael@0: timer = null; michael@0: switch (status) { michael@0: case "100": michael@0: response.setStatusLine(request.httpVersion, 101, "Switching Protocols"); michael@0: break; michael@0: case "200": michael@0: response.setStatusLine(request.httpVersion, 202, "Created"); michael@0: break; michael@0: case "300": michael@0: response.setStatusLine(request.httpVersion, 303, "See Other"); michael@0: break; michael@0: case "400": michael@0: response.setStatusLine(request.httpVersion, 404, "Not Found"); michael@0: break; michael@0: case "500": michael@0: response.setStatusLine(request.httpVersion, 501, "Not Implemented"); michael@0: break; michael@0: } michael@0: response.setHeader("Content-Type", "text/plain; charset=utf-8", false); michael@0: response.write("Hello status code " + status + "!"); michael@0: response.finish(); michael@0: }, 10, Ci.nsITimer.TYPE_ONE_SHOT); // Make sure this request takes a few ms. michael@0: }