UNPKG

mnubo-sdk

Version:
78 lines 2.68 kB
"use strict"; 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