示例#1
0
        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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#6
0
        /// <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);
        }
示例#8
0
        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));
        }