37 lines
941 B
JavaScript
37 lines
941 B
JavaScript
const CC = Components.Constructor;
|
|
const BinaryInputStream = CC(
|
|
"@mozilla.org/binaryinputstream;1",
|
|
"nsIBinaryInputStream",
|
|
"setInputStream"
|
|
);
|
|
|
|
function readStream(inputStream) {
|
|
let available = 0;
|
|
let result = [];
|
|
while ((available = inputStream.available()) > 0) {
|
|
result.push(inputStream.readBytes(available));
|
|
}
|
|
|
|
return result.join("");
|
|
}
|
|
|
|
function handleRequest(request, response) {
|
|
if (request.method != "POST") {
|
|
response.setStatusLine(request.httpVersion, 405, "Method Not Allowed");
|
|
return;
|
|
}
|
|
|
|
if (request.hasHeader("Authorization")) {
|
|
let data = "";
|
|
try {
|
|
data = readStream(new BinaryInputStream(request.bodyInputStream));
|
|
} catch (e) {
|
|
data = `${e}`;
|
|
}
|
|
response.bodyOutputStream.write(data, data.length);
|
|
return;
|
|
}
|
|
|
|
response.setStatusLine(request.httpVersion, 401, "Unauthorized");
|
|
response.setHeader("WWW-Authenticate", `basic realm="test"`, true);
|
|
}
|