const request = require('request'); const logger = require('tektrans-logger'); const coreUrl = require('komodo-sdk/core-url'); logger.verbose(`CORE URL: ${coreUrl}`); function doRequest(params, cb) { return new Promise((resolve) => { const options = { url: `${coreUrl}/${params.path.replace(/^\/+/, '')}`, method: params.method || 'GET', qs: params.qs || null, }; logger.verbose('Requesting to CORE', { xid: params.xid, method: options.method, fullpath: options.url, qs: options.qs, }); request(options, (err, res, body) => { if (err) { logger.warn(`COREAPI: Error doing HTTP ${options.method} to CORE. ${err.toString()}`, { xid: params.xid }); resolve(null); if (typeof cb === 'function') cb(err); return; } if (res.statusCode !== 200) { logger.warn(`COREAPI: CORE returning HTTP STATUS CODE ${res.statusCode}, not 200`, { xid: params.xid, body }); resolve(null); if (typeof cb === 'function') cb('NON_HTTP_STATUS_200'); return; } let bodyObject; try { bodyObject = JSON.parse(body); } catch (e) { logger.verbose('COREAPI: CORE respond is not a JSON string'); resolve(body); if (typeof cb === 'function') cb(e, body); return; } resolve(bodyObject); if (typeof cb === 'function') cb(null, bodyObject); }); }); } module.exports = doRequest;