UNPKG

node-red-contrib-powerbi

Version:

A PowerBI API interaction node-red module which allows to interact with PowerBI service.

137 lines (110 loc) 4.41 kB
var request = require('request'); module.exports = function(RED) { function PowerBIDatasetRefresh(config) { RED.nodes.createNode(this,config); // Retrieve the connection node. this.connection = RED.nodes.getNode(config.connection); var node = this; function IsInvalidParameter(p) { return (p === undefined || p.id === undefined || p.id.length === 0); } node.on('input', function(msg) { function ProcessResponse(error, response, body) { msg.status = response.statusCode; msg.headers = response.headers; msg.payload = body; response !== undefined && response.statusCode !== undefined && response.statusCode === 200 ? node.send(msg) : node.send([null, msg]); } if (config.operation !== 'getdatasets' && IsInvalidParameter(msg.dataset)) { msg.payload = 'Missing dataset id'; node.send([null, msg]); return; } switch(config.operation) { case 'bindtogateway': // POST https://api.powerbi.com/v1.0/myorg/datasets/{dataset_id}/BindToGateway // POST https://api.powerbi.com/v1.0/myorg/groups/{group_id}/datasets/{dataset_id}/BindToGateway // Body : { "gatewayId": "c8aae8cf-9de8-4934-9b99-ff45302291ce" } break; case 'createdataset': // POST https://api.powerbi.com/v1.0/myorg/datasets // POST https://api.powerbi.com/v1.0/myorg/datasets?defaultRetentionPolicy={None | basicFIFO} // POST https://api.powerbi.com/v1.0/myorg/groups/{group_id}/datasets // Header: // Content-Type: application/json // Docs: // https://msdn.microsoft.com/en-us/library/mt203562.aspx break; case 'getdatasets': if (IsInvalidParameter(msg.workspace) == false) { request({ method:'GET', url: 'https://api.powerbi.com/v1.0/myorg/groups/' + msg.workspace.id + '/datasets', headers: { 'Authorization': 'Bearer ' + node.connection.accesstoken }}, ProcessResponse); } else { request({ method:'GET', url: 'https://api.powerbi.com/v1.0/myorg/datasets', headers: { 'Authorization': 'Bearer ' + node.connection.accesstoken }}, ProcessResponse); } break; case 'getdataset': if (IsInvalidParameter(msg.workspace) == false) { request({ method:'GET', url: 'https://api.powerbi.com/v1.0/myorg/groups/' + msg.workspace.id + '/datasets/' + msg.dataset.id, headers: { 'Authorization': 'Bearer ' + node.connection.accesstoken }}, ProcessResponse); } else { request({ method:'GET', url: 'https://api.powerbi.com/v1.0/myorg/datasets/' + msg.dataset.id, headers: { 'Authorization': 'Bearer ' + node.connection.accesstoken }}, ProcessResponse); } break; case 'getdatasetrefreshhistory': // GET https://api.powerbi.com/v1.0/myorg/datasets/{dataset_id}/refreshes/?$top={N} // GET https://api.powerbi.com/v1.0/myorg/groups/{group_id}/datasets/{dataset_id}/refreshes/?$top={N} if (IsInvalidParameter(msg.workspace) == false) { request({ method:'GET', url: 'https://api.powerbi.com/v1.0/myorg/groups/' + msg.workspace.id + '/datasets/' + msg.dataset.id + '/refreshes/?$top=' + (msg.dataset.refreshcount || 1), headers: { 'Authorization': 'Bearer ' + node.connection.accesstoken }}, ProcessResponse); } else { request({ method:'GET', url: 'https://api.powerbi.com/v1.0/myorg/datasets/' + msg.dataset.id + '/refreshes/?$top=' + (msg.dataset.refreshcount || 1), headers: { 'Authorization': 'Bearer ' + node.connection.accesstoken }}, ProcessResponse); } break; case 'refreshdataset': // POST https://api.powerbi.com/v1.0/myorg/datasets/{dataset_id}/refreshes // POST https://api.powerbi.com/v1.0/myorg/groups/{group_id}/datasets/{dataset_id}/refreshes break; case 'takeover': // POST https://api.powerbi.com/v1.0/myorg/datasets/{dataset_id}/takeover // POST https://api.powerbi.com/v1.0/myorg/groups/{group_id}/datasets/{dataset_id}/takeover break; }; }); } RED.nodes.registerType('powerbi-dataset', PowerBIDatasetRefresh); }