mnubo-sdk
Version:
mnubo SmartObjects JavaScript client
78 lines • 2.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var http = require("http");
var https = require("https");
var zlib = require("zlib");
var request_1 = require("../request");
function nodeHttpRequest(request) {
var data = Buffer.from(request.payload(), 'utf-8');
if (request.options.headers.get('Content-Encoding') === 'gzip') {
data = zlib.gzipSync(Buffer.from(data));
}
var options = {
protocol: request.options.protocol + ':',
hostname: request.options.hostname,
port: request.options.port,
method: request_1.RequestMethods[request.method],
path: request.options.path,
headers: {
'Content-Length': data.length,
},
};
request.options.headers.forEach(function (value, header) {
options.headers[header] = value;
});
var promise = new Promise(function (resolve, reject) {
var cb = function (response) {
var buffers = [];
response.on('data', function (chunk) {
buffers.push(chunk);
});
response.on('end', function () {
var buffer = Buffer.concat(buffers);
var payload;
if (response.headers['content-encoding'] === 'gzip') {
payload = zlib.gunzipSync(buffer);
}
else {
payload = buffer.toString();
}
if (payload.length) {
if (response.headers &&
response.headers['content-type'] &&
response.headers['content-type'].indexOf('application/json') !== -1) {
payload = JSON.parse(payload.toString());
}
}
else {
payload = null;
}
var statusCode = response.statusCode;
if (statusCode >= 200 && statusCode < 300) {
resolve(payload);
}
else {
reject({
statusCode: statusCode,
payload: payload,
});
}
});
};
var req;
if (request.options.protocol === 'https') {
req = https.request(options, cb);
}
else {
req = http.request(options, cb);
}
req.on('error', function (error) {
reject(error);
});
req.write(data);
req.end();
});
return promise;
}
exports.nodeHttpRequest = nodeHttpRequest;
//# sourceMappingURL=node_backend.js.map