public Guid PostImport(string datasetDisplayName, string filePath, ImportConflictHandlerModeEnum nameConflict)
 {
     using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
     {
         var response = this.Client.Imports.PostImportWithFile(
             fileStream: fileStream,
             datasetDisplayName: datasetDisplayName,
             nameConflict: nameConflict.ToString()
             );
         return(Guid.Parse(response.Id));
     }
 }
        public Report PostReport(string reportName, string filePath, ImportConflictHandlerModeEnum nameConflict, int timeout)
        {
            var importId = this.PostImport(reportName, filePath, nameConflict);

            Nullable <DateTime> timeoutAt = null;

            if (timeout > 0)
            {
                timeoutAt = DateTime.Now.AddSeconds(timeout);
            }

            Import import = null;

            do
            {
                import = this.GetImport(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);
            }

            return(import.Reports.Single());
        }