Example #1
0
        public PowerBIEmbedConfig GetReportAccessToken(PowerBiReportRequest request)
        {
            try
            {
                var result = new PowerBIEmbedConfig {
                    Username = request.Username
                };
                var accessToken      = GetPowerBIAccessToken(request.Username, request.Password);
                var tokenCredentials = new TokenCredentials(accessToken, "Bearer");

                using (var client = new PowerBIClient(new Uri("https://api.powerbi.com/"), tokenCredentials))
                {
                    var workspaceId = request.WorkspaceId;
                    var reportId    = request.ReportId;
                    var report      = client.Reports.GetReportInGroupAsync(workspaceId, reportId).Result;
                    var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view");
                    var tokenResponse = client.Reports.GenerateTokenAsync(workspaceId, reportId, generateTokenRequestParameters).Result;

                    result.EmbedToken = tokenResponse;
                    result.EmbedUrl   = report.EmbedUrl;

                    return(result);
                }
            }
            catch (Exception)
            {
                return(null);
            }
        }
        public IActionResult GetReport([FromBody] PowerBiReportRequest request)
        {
            var response = _powerBiService.GetReportInfo(request);

            if (!response.Success)
            {
                return(NotFound(response));
            }

            return(Ok(response));
        }
Example #3
0
        public IDataResult <GetReportInfoResponse> GetReportInfo(PowerBiReportRequest request)
        {
            var accessToken = GetReportAccessToken(request);

            if (accessToken == null)
            {
                return(new ErrorDataResult <GetReportInfoResponse>(new GetReportInfoResponse(), Messages.Unauthorized));
            }

            GetReportInfoResponse response = new GetReportInfoResponse()
            {
                AccessToken = accessToken.EmbedToken.Token,
                EmbedUrl    = accessToken.EmbedUrl,
                ReportId    = request.ReportId
            };

            return(new SuccessDataResult <GetReportInfoResponse>(response));
        }