public EmbedParams GetEmbedParams(Guid workspaceId, Guid reportId, [Optional] Guid additionalDatasetId) { PowerBIClient pbiClient = this.GetPowerBIClient(); var pbiReport = pbiClient.Reports.GetReportInGroup(workspaceId, reportId); var datasetIds = new List <Guid> { Guid.Parse(pbiReport.DatasetId) }; if (additionalDatasetId != Guid.Empty) { datasetIds.Add(additionalDatasetId); } var embedReports = new List <EmbedReport>() { new EmbedReport { ReportId = pbiReport.Id, ReportName = pbiReport.Name, EmbedUrl = pbiReport.EmbedUrl } }; var embedToken = GetEmbedToken(reportId, datasetIds, workspaceId); var embedParams = new EmbedParams { EmbedReport = embedReports, Type = "Report", EmbedToken = embedToken }; return(embedParams); }
/// <summary> /// Get embed params for a report /// </summary> /// <returns>Wrapper object containing Embed token, Embed URL, Report Id, and Report name for single report</returns> public EmbedParams GetEmbedParams(Guid workspaceId, Guid reportId, [Optional] Guid additionalDatasetId) { PowerBIClient pbiClient = this.GetPowerBIClient(); // Get report info var pbiReport = pbiClient.Reports.GetReportInGroup(workspaceId, reportId); // Check if dataset is present for the corresponding report // If isRDLReport is true then it is a RDL Report var isRDLReport = String.IsNullOrEmpty(pbiReport.DatasetId); EmbedToken embedToken; // Generate embed token for RDL report if dataset is not present if (isRDLReport) { // Get Embed token for RDL Report embedToken = GetEmbedTokenForRDLReport(workspaceId, reportId); } else { // Create list of datasets var datasetIds = new List <Guid>(); // Add dataset associated to the report datasetIds.Add(Guid.Parse(pbiReport.DatasetId)); // Append additional dataset to the list to achieve dynamic binding later if (additionalDatasetId != Guid.Empty) { datasetIds.Add(additionalDatasetId); } // Get Embed token multiple resources embedToken = GetEmbedToken(reportId, datasetIds, workspaceId); } // Add report data for embedding var embedReports = new List <EmbedReport>() { new EmbedReport { ReportId = pbiReport.Id, ReportName = pbiReport.Name, EmbedUrl = pbiReport.EmbedUrl } }; // Capture embed params var embedParams = new EmbedParams { EmbedReport = embedReports, Type = "Report", EmbedToken = embedToken }; return(embedParams); }
/// <summary> /// Get embed params for a report /// </summary> /// <returns>Wrapper object containing Embed token, Embed URL, Report Id, and Report name for all reports in Workspace</returns> public EmbedParams GetEmbedParams(Guid workspaceId, [Optional] IList <Guid> additionalDatasetIds) { PowerBIClient pbiClient = GetPowerBIClient(); // Get reports info //var pbiReport = pbiClient.Reports.GetReportInGroup(workspaceId, reportId); //var pbiReports = pbiClient.Reports.GetReport(workspaceId); // Create list of datasets var datasetIds = new List <Guid>(); var reportsIds = new List <Guid>() { new Guid("454188d2-f217-4dbe-b6bb-bdbcde471f33"), new Guid("454188d2-f217-4dbe-b6bb-bdbcde471f33") }; var embedReports = new List <EmbedReport>(); var pbiReports = reportsIds.Select(r => pbiClient.Reports.GetReport(workspaceId, r)); foreach (var report in pbiReports) { // Add dataset associated to the report datasetIds.Add(Guid.Parse(report.DatasetId)); // Add report data for embedding embedReports.Add(new EmbedReport { ReportId = report.Id, ReportName = report.Name, EmbedUrl = report.EmbedUrl }); //reportsIds.Add(report.Id); } // Append additional dataset to the list to achieve dynamic binding later if (additionalDatasetIds != null && additionalDatasetIds.Any()) { datasetIds.AddRange(additionalDatasetIds.Where(adsid => adsid != Guid.Empty)); } // Get Embed token multiple resources var embedToken = GetEmbedToken(reportsIds, datasetIds, workspaceId); // Capture embed params var embedParams = new EmbedParams { EmbedReports = embedReports, Type = "Report", EmbedToken = embedToken }; return(embedParams); }
/// <summary> /// Generate Embed token and Embed URL /// </summary> /// <returns></returns> public EmbedParams GenerateEmbedParams(string username = null, string role = null) { // Get report info var pbiReport = pbiClient.Reports.GetReportInGroup(workspaceId, reportId); // Create list of datasets var datasets = new GenerateTokenRequestV2Dataset[] { new GenerateTokenRequestV2Dataset(pbiReport.DatasetId) }; // Create list of reports var reports = new GenerateTokenRequestV2Report[] { new GenerateTokenRequestV2Report(reportId) }; // Create list of workspaces var workspaces = new GenerateTokenRequestV2TargetWorkspace[] { new GenerateTokenRequestV2TargetWorkspace(workspaceId) }; // Create effective identity for current user List <EffectiveIdentity> identities = null; if (!string.IsNullOrWhiteSpace(username) || !string.IsNullOrWhiteSpace(role)) { identities = new List <EffectiveIdentity> { new EffectiveIdentity(username: username, roles: new List <string> { role }, datasets: new List <string> { pbiReport.DatasetId }) }; } // Create a request for getting Embed token var tokenRequest = new GenerateTokenRequestV2(datasets: datasets, reports: reports, targetWorkspaces: workspaces, identities: identities); // Get Embed token var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest); // Capture embed parameters var embedParams = new EmbedParams { Id = pbiReport.Id, EmbedUrl = pbiReport.EmbedUrl, Type = "report", EmbedToken = new EmbedToken { Token = embedToken.Token, TokenId = embedToken.TokenId, Expiration = embedToken.Expiration }, DefaultPage = null }; return(embedParams); }
public async Task <EmbedParams> Get(string id) { powerBI.Value.ReportId = id; // Validate whether all the required configurations are provided in appsettings.json string configValidationResult = ConfigValidatorService.ValidateConfig(azureAd, powerBI); if (configValidationResult != null) { throw new ArgumentException(); } EmbedParams embedParams = await pbiEmbedService.GetEmbedParams(new Guid(powerBI.Value.WorkspaceId), new Guid(powerBI.Value.ReportId)); return(embedParams); }
/// <summary> /// Get embed params for multiple reports for a single workspace /// </summary> /// <returns>Wrapper object containing Embed token, Embed URL, Report Id, and Report name for multiple reports</returns> public EmbedParams GetEmbedParams(Guid workspaceId, IList <Guid> reportIds, [Optional] IList <Guid> additionalDatasetIds) { // Note: This method is an example and is not consumed in this sample app PowerBIClient pbiClient = this.GetPowerBIClient(); // Create mapping for reports and Embed URLs var embedReports = new List <EmbedReport>(); // Create list of datasets var datasetIds = new List <Guid>(); // Get datasets and Embed URLs for all the reports foreach (var reportId in reportIds) { // Get report info var pbiReport = pbiClient.Reports.GetReportInGroup(workspaceId, reportId); datasetIds.Add(Guid.Parse(pbiReport.DatasetId)); // Add report data for embedding embedReports.Add(new EmbedReport { ReportId = pbiReport.Id, ReportName = pbiReport.Name, EmbedUrl = pbiReport.EmbedUrl }); } // Append to existing list of datasets to achieve dynamic binding later if (additionalDatasetIds != null) { datasetIds.AddRange(additionalDatasetIds); } // Get Embed token multiple resources var embedToken = GetEmbedToken(reportIds, datasetIds, workspaceId); // Capture embed params var embedParams = new EmbedParams { EmbedReport = embedReports, Type = "Report", EmbedToken = embedToken }; return(embedParams); }
/// <summary> /// Get embed params for a report /// </summary> /// <returns>Wrapper object containing Embed token, Embed URL, Report Id, and Report name for single report</returns> public EmbedParams GetEmbedParams(Guid workspaceId, Guid reportId, [Optional] Guid additionalDatasetId) { PowerBIClient pbiClient = this.GetPowerBIClient(); var reports = pbiClient.Reports.GetReports(workspaceId); // Get report info var pbiReport = pbiClient.Reports.GetReportInGroup(workspaceId, reports.Value.First().Id); // // Create list of datasets var datasetIds = new List <Guid>(); // Add dataset associated to the report datasetIds.Add(Guid.Parse(pbiReport.DatasetId)); // Append additional dataset to the list to achieve dynamic binding later if (additionalDatasetId != Guid.Empty) { datasetIds.Add(additionalDatasetId); } // Add report data for embedding var embedReports = new List <EmbedReport>() { new EmbedReport { ReportId = pbiReport.Id, ReportName = pbiReport.Name, EmbedUrl = pbiReport.EmbedUrl } }; // Get Embed token multiple resources var embedToken = GetEmbedToken(reports.Value.First().Id, datasetIds, workspaceId); // Capture embed params var embedParams = new EmbedParams { EmbedReport = embedReports, Type = "Report", EmbedToken = embedToken }; return(embedParams); }
public string GetEmbedInfo() { try { // Validate whether all the required configurations are provided in appsettings.json string configValidationResult = ConfigValidatorService.ValidateConfig(azureAd, powerBI); if (configValidationResult != null) { HttpContext.Response.StatusCode = 400; return(configValidationResult); } EmbedParams embedParams = pbiEmbedService.GetEmbedParams(new Guid(powerBI.Value.WorkspaceId), new Guid(powerBI.Value.ReportId)); return(JsonSerializer.Serialize <EmbedParams>(embedParams)); } catch (Exception ex) { HttpContext.Response.StatusCode = 500; return(ex.Message + "\n\n" + ex.StackTrace); } }
public async Task <EmbedParams> GetEmbedParamsForReportAsync(string reportId) { var allPBIReports = await this.GetReportsAsync(); var pbiReport = allPBIReports.FirstOrDefault(r => r.Report.Id.ToString() == reportId); if (pbiReport == null) { return(null); } EmbedParams embedParams = null; var tokenForMultipleReports = this.powerBIOptions.TokenForMultipleReports; var pbiReportList = tokenForMultipleReports ? allPBIReports : new List <PBIReport>() { pbiReport }; var embedToken = await this.GetEmbedTokenForReportsAsync(pbiReportList); if (!tokenForMultipleReports) { this.embedTokentDict[reportId] = embedToken; } embedParams = new EmbedParams() { ReportId = reportId, EmbedToken = embedToken.Token, ExpiresOn = embedToken.Expiration, EmbedUrl = pbiReport.Report.EmbedUrl, SafetyIntervalInMinutes = this.powerBIOptions.SafetyIntervalInMinutes }; return(embedParams); }
public string GetEmbedInfo() { EmbedParams embedParams = pbiService.GetEmbedParams(new Guid(Globals.WORKSPACE_ID), new Guid(Globals.REPORT_ID)); return(JsonSerializer.Serialize <EmbedParams>(embedParams)); }