1const CC = Components.Constructor;
2const BinaryInputStream = CC("@mozilla.org/binaryinputstream;1",
3                             "nsIBinaryInputStream",
4                             "setInputStream");
5
6function handleRequest(request, response) {
7  response.setHeader("Content-Type", "text/plain", false);
8  if (request.method == "GET") {
9    response.write(request.queryString);
10  } else {
11    var body = new BinaryInputStream(request.bodyInputStream);
12
13    var avail;
14    var bytes = [];
15
16    while ((avail = body.available()) > 0)
17      Array.prototype.push.apply(bytes, body.readByteArray(avail));
18
19    var data = String.fromCharCode.apply(null, bytes);
20    if (request.queryString) {
21      data = data + "?" + request.queryString;
22    }
23    response.bodyOutputStream.write(data, data.length);
24  }
25}
26