UNPKG

omniacare

Version:

CHR OmniaCare API SDK for NodeJS

72 lines (65 loc) 2.1 kB
"use strict"; var _ = require('lodash'), http = require('http'), querystring = require('querystring'), parseXMLString = require('xml2js').parseString; var configuration = require('../configure'); /** * Set up configuration by merging user provided configurations with the * default settings * @param {Object} options Configuration parameters passed as an object * @return {undefined} */ var configure = exports.configure = function configure(options) { if (options !== undefined && typeof options === 'object') { configuration.defaultOptions = _.merge({}, configuration.defaultOptions, options); } }; /** * Makes an OmniaCare API Call * @param {Object} options http configuration object * @param {Object} data post data object * @return {function} Promise */ var executeHTTP = exports.executeHTTP = function(method, data) { var post_data = querystring.stringify({'sXML': data}); var options = _.merge({}, configuration.defaultOptions, { path: configuration.defaultOptions.path + method, headers: {'Content-Length': Buffer.byteLength(post_data)} }); return new Promise(function(resolve, reject) { // var nock = require('nock'); // nock.recorder.rec(); var request = http.request(options, function(res) { res.setEncoding('utf8'); var data = ''; res.on('data', function(chunk) { data += chunk; }); res.on('end', function() { parseXMLString(data, function(err, result) { if (err) { return reject(err); } var xml = result.string._ .replace(/[\n\r]/g, '\\n') .replace(/&/g,"&") .replace(/-/g,"-"); parseXMLString(xml, function(err, result) { if (err) { return reject(err); } return resolve(result); }); }); }); res.on('error', function(e) { return reject(e.message); }); }); request.write(post_data); request.end(); // var nockCalls = nock.recorder.play(); // console.log(nockCalls); }); };