const unirest = require('unirest'); const logger = require('utils/request-logger'); const UnirestError = require('utils/errors').UnirestError; const sendRequest = {}; sendRequest.get = function(url, timeout, session) { return new Promise( (resolve, reject) => { let headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}; logger.logRequest('GET', url, session, {}, headers); unirest.get(url) .headers(headers) .timeout(timeout) .end( (response) => { if(response.error) { logger.logResponse('GET', url, session, response.error, response.headers); reject(new UnirestError(response.error)); } else { logger.logResponse('GET', url, session, response.body, response.headers); resolve(response); } }); }); }; sendRequest.post = function(url, timeout, session, data) { return new Promise( (resolve, reject) => { let headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(JSON.stringify(data)) }; logger.logRequest('POST', url, session, data, headers); unirest.post(url) .headers(headers) .timeout(timeout) .send(data) .end( (response) => { if(response.error) { logger.logResponse('POST', url, session, response.error, response.headers); reject(response.error); } else { logger.logResponse('POST', url, session, response.body, response.headers); resolve(response); } }); }); }; sendRequest.put = function(url, timeout, session, data) { return new Promise( (resolve, reject) => { let headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(JSON.stringify(data)) }; logger.logRequest('PUT', url, session, data, headers); unirest.put(url) .headers(headers) .timeout(timeout) .send(data) .end( (response) => { if(response.error) { logger.logResponse('PUT', url, session, response.error, response.headers); reject(response.error); } else { logger.logResponse('PUT', url, session, response.body, response.headers); resolve(response); } }); }); }; sendRequest.delete = function(url, timeout, session) { return new Promise( (resolve, reject) => { let headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}; logger.logRequest('DELETE', url, session, {}, headers); unirest.delete(url) .headers(headers) .timeout(timeout) .end( (response) => { if(response.error) { logger.logResponse('DELETE', url, session, response.error, response.headers); reject(response.error); } else { logger.logResponse('DELETE', url, session, response.body, response.headers); resolve(response); } }); }); }; module.exports = sendRequest;