mstr-report-data-service
Version:
A Node function for calling Microstrategy's reportDataService task and returning the payload as JSON.
65 lines (54 loc) • 2.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _requestPromise = require('request-promise');
var _requestPromise2 = _interopRequireDefault(_requestPromise);
var _parseMstrResults = require('./parseMstrResults');
var _parseMstrResults2 = _interopRequireDefault(_parseMstrResults);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* The reportDataService function.
* @param {Object} args Request arguments object.
* @param {String} args.user Username.
* @param {String} args.pass Password of user.
* @param {String} args.reportID reportID of the report you want to run.
* @param {String} args.server Server name.
* @param {String} args.project Project name.
* @param {String} args.url Url of your Microstrategy instance.
* @param {String} [args.port] Server port.
* @returns {Promise} Resolved promise containing report data.
*/
function reportDataService(args) {
return new Promise(function (resolve, reject) {
// error handling;
var errCount = 1;
var err = ['url', 'pass', 'project', 'server', 'user', 'reportID'].reduce(function (acc, prop, idx) {
return !args.hasOwnProperty(prop) ? acc.concat('Error [' + errCount++ + ']: ' + prop + ' is undefined.') : acc;
}, []).join('\n');
if (err.length > 0) return reject(err);
(0, _requestPromise2.default)({
method: 'GET',
url: args.url,
qs: {
taskId: 'reportDataService',
password: args.pass,
port: args.port || '0',
project: args.project,
server: args.server,
userid: args.user,
reportID: args.reportID, // report id, in MSTR right click on report > properties
styleName: 'ReportDataVisualizationXMLStyle',
taskContentType: 'xml',
taskEnv: 'xml'
}
}).then(_parseMstrResults2.default).then(function (body) {
resolve(body);
}).catch(function (err) {
reject(err);
});
});
}
exports.default = reportDataService;
module.exports = reportDataService;
//# sourceMappingURL=reportDataService.js.map