in src/Common/Common.Api/Reports/ReportsClient.cs [174:211]
public Report PostReportForWorkspace(Guid workspaceId, string reportName, string filePath, ImportConflictHandlerModeEnum nameConflict, int timeout)
{
var importId = this.PostImportForWorkspace(workspaceId, reportName, filePath, nameConflict);
Nullable<DateTime> timeoutAt = null;
if (timeout > 0)
{
timeoutAt = DateTime.Now.AddSeconds(timeout);
}
Import import = null;
do
{
import = this.GetImportForWorkspace(workspaceId: workspaceId, importId: importId);
if (import.ImportState != "Succeeded")
{
if (timeoutAt != null && DateTime.Now > timeoutAt)
{
throw new TimeoutException();
}
else
{
System.Threading.Thread.Sleep(500);
}
}
} while (import.ImportState == "Publishing");
if (import.ImportState != "Succeeded")
{
throw new ImportException(importId, reportName, import.ImportState);
}
// In case the import has more than one report
var actualReportName = reportName.EndsWith(".pbix") ? reportName.Substring(0, reportName.Length - 5) : reportName;
return import.Reports.Where(r => r.Name == actualReportName).LastOrDefault() ?? import.Reports.FirstOrDefault(); //For robust
}