Created
April 25, 2017 16:02
-
-
Save EliJDonahue/12758ea0bb25df54b0465c3fd50f845d to your computer and use it in GitHub Desktop.
Sample code for power BI blog
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Innovator innovator = this.getInnovator(); | |
| string item = this.getProperty("item", ""); | |
| string name = this.getProperty("itemName", ""); | |
| Item result = innovator.applyMethod("PowerBI_GetToken", ""); | |
| string accessToken = result.getResult(); | |
| Item results = innovator.newItem(); | |
| if (accessToken != "") { | |
| if (item == "report") { | |
| string ReturnXML = ""; | |
| Report[] reports = GetReports(accessToken); | |
| Report report = (from r in reports where r.name == name select r).FirstOrDefault(); | |
| ReturnXML += "<Item type='Report'>"; | |
| ReturnXML += "<id>" + report.id + "</id>"; | |
| ReturnXML += "<name>" + report.name + "</name>"; | |
| ReturnXML += "<webUrl><![CDATA[" + report.webUrl + "]]></webUrl>"; | |
| ReturnXML += "<embedUrl><![CDATA[" + report.embedUrl + "]]></embedUrl>"; | |
| ReturnXML += "<token>" + accessToken + "</token>"; | |
| ReturnXML += "</Item>"; | |
| ReturnXML = "<Envelope><Body><Result>" + ReturnXML + "</Result></Body></Envelope>"; | |
| results.dom.LoadXml(ReturnXML); | |
| } | |
| else if (item == "dashboard") { | |
| string ReturnXML = ""; | |
| Dashboard[] dashboards = GetDashboards(accessToken); | |
| Dashboard dashboard = (from d in dashboards where d.displayName == name select d).FirstOrDefault(); | |
| ReturnXML += "<Item type='Dashboard'>"; | |
| ReturnXML += "<id>" + dashboard.id + "</id>"; | |
| ReturnXML += "<displayName>" + dashboard.displayName + "</displayName>"; | |
| ReturnXML += "<token>" + accessToken + "</token>"; | |
| ReturnXML += "</Item>"; | |
| ReturnXML = "<Envelope><Body><Result>" + ReturnXML + "</Result></Body></Envelope>"; | |
| results.dom.LoadXml(ReturnXML); | |
| } | |
| } | |
| return results; | |
| } | |
| protected Report[] GetReports(string token) | |
| { | |
| string powerBIReportsUrl = "https://api.powerbi.com/beta/myorg/reports"; | |
| HttpWebRequest request = System.Net.WebRequest.Create(powerBIReportsUrl) as System.Net.HttpWebRequest; | |
| request.KeepAlive = true; | |
| request.Method = "GET"; | |
| request.ContentLength = 0; | |
| request.ContentType = "application/json"; | |
| // Add token to the request header | |
| request.Headers.Add("Authorization", String.Format("Bearer {0}", token)); | |
| // Get HttpWebResponse from the GET request | |
| using (HttpWebResponse httpResponse = request.GetResponse() as System.Net.HttpWebResponse) | |
| { | |
| // Use StreamReader to deserialize the HttpWebResponse | |
| using (StreamReader reader = new System.IO.StreamReader(httpResponse.GetResponseStream())) | |
| { | |
| string responseContent = reader.ReadToEnd(); | |
| var results = Newtonsoft.Json.JsonConvert.DeserializeObject<Reports>(responseContent); | |
| return results.value; | |
| } | |
| } | |
| } | |
| protected Dashboard[] GetDashboards(string token) | |
| { | |
| string powerBIDashboardsUrl = "https://api.powerbi.com/beta/myorg/dashboards"; | |
| HttpWebRequest request = System.Net.WebRequest.Create(powerBIDashboardsUrl) as System.Net.HttpWebRequest; | |
| request.KeepAlive = true; | |
| request.Method = "GET"; | |
| request.ContentLength = 0; | |
| request.ContentType = "application/json"; | |
| // Add token to the request header | |
| request.Headers.Add("Authorization", String.Format("Bearer {0}", token)); | |
| // Get HttpWebResponse from the GET request | |
| using (HttpWebResponse httpResponse = request.GetResponse() as System.Net.HttpWebResponse) | |
| { | |
| // Use StreamReader to deserialize the HttpWebResponse | |
| using (StreamReader reader = new System.IO.StreamReader(httpResponse.GetResponseStream())) | |
| { | |
| string responseContent = reader.ReadToEnd(); | |
| var results = Newtonsoft.Json.JsonConvert.DeserializeObject<Dashboards>(responseContent); | |
| return results.value; | |
| } | |
| } | |
| } | |
| // Used to deserialize the response | |
| public class Reports | |
| { | |
| public Report[] value { get; set; } | |
| } | |
| public class Report | |
| { | |
| public string id { get; set; } | |
| public string name { get; set; } | |
| public string webUrl { get; set; } | |
| public string embedUrl { get; set; } | |
| } | |
| public class Dashboards | |
| { | |
| public Dashboard[] value { get; set; } | |
| } | |
| public class Dashboard | |
| { | |
| public string id { get; set; } | |
| public string displayName { get; set; } | |
| // note: the missing curly brace is intentional due to the way | |
| // Aras executes method code inside a template method |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment