cranker-router
Version:
A cranker router in Javascript.
59 lines (50 loc) • 1.95 kB
JavaScript
// A simple promise based HTTP client for testing -*- js-indent-level: 4 -*-
const http = require("http");
const querystring = require("querystring");
exports.request = function(routerPort, formData) {
return new Promise((resolve, reject) => {
const fd = formData !== undefined ? formData : {};
const encoded = querystring.stringify(fd);
const headers = formData === undefined ? {} : {
"content-type": "application/x-www-form-urlencoded",
"content-length": Buffer.byteLength(encoded)
};
const options = {
method: formData !== undefined ? "POST" : "GET",
host: "localhost",
port: routerPort,
path: "/test",
headers: headers
};
console.log(`>test http client starting ${options.method} ${options.host}:${options.port} ${options.path}`);
const req = http.request(options, function (response) {
console.log(
">test http client response received",
options.method + " Request response headers",
response.statusCode,
response.statusMessage,
response.headers,
"request headers", headers
);
const resultObject = {
statusCode: response.statusCode,
statusMessage: response.statusMessage,
headers: response.headers,
chunkArray: []
};
response.on("data", (d) => {
const string = new String(d);
resultObject.chunkArray.push(string);
});
response.on("end", function () {
resolve(resultObject);
});
});
if (formData !== undefined) {
console.log(">test http client going to write", encoded);
req.write(encoded);
}
req.end();
});
}
// End