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)); }
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)); }