protected void DownloadDatasourceFiles(IEnumerable <SiteDatasource> datasources, string savePath) { var projectRequest = new DownloadProjectsList(Urls, Login, HttpClientFactory); projectRequest.ExecuteRequest(); var downloadDatasources = new DownloadDatasources(Urls, Login, datasources, savePath, projectRequest, false, new KeyedLookup <SiteUser>(new List <SiteUser>()), HttpClientFactory); downloadDatasources.ExecuteRequest(); }
/// <summary> /// /// </summary> /// <param name="onlineLogin"></param> /// <param name="exportToPath"></param> /// <param name="projectsList"></param> /// <param name="singleProjectIdFilter"></param> /// <param name="exportOnlyWithThisTag"></param> /// <param name="deleteTagAfterExport"></param> /// <param name="generateInfoFile">TRUE: Each downloaded workbook will get an information file generated that has additional metadata about it</param> /// <param name="siteUsers"> If not NULL, then this will get used to look the user name for each downloaded workbook, and safe it into the info file</param> private void Execute_DownloadDatasources( TableauServerSignIn onlineLogin, string exportToPath, IProjectsList projectsList, SiteProject singleProjectIdFilter = null, string exportOnlyWithThisTag = null, bool deleteTagAfterExport = false, bool generateInfoFile = false, IEnumerable<SiteUser> siteUsers = null ) { _statusLog.AddStatusHeader("Download datasources"); ICollection<SiteDatasource> datasourcesList = null; try { //Get the list of datasources var datasourcesManager = new DownloadDatasourcesList(_onlineUrls, onlineLogin); datasourcesManager.ExecuteRequest(); datasourcesList = datasourcesManager.Datasources; } catch(Exception exGetContentList) { _statusLog.AddError("Error querying for list of datasources, " + exGetContentList.Message.ToString()); } if(datasourcesList == null) { _statusLog.AddError("Aborting datasources download"); return; } //==================================================================================================== //Apply filters to the list of content to see if we need to reduce the set of content to be downloaded //==================================================================================================== var filteredList = datasourcesList; _statusLog.AddStatus("Download datasources count before filters: " + filteredList.Count.ToString()); //See if we have a PROJECTS filter to apply to the set of content to download filteredList = FilterProjectMembership<SiteDatasource>.KeepOnlyProjectMembers( filteredList, singleProjectIdFilter, true); _statusLog.AddStatus("Download datasources count after projects filter: " + filteredList.Count.ToString()); //See if we have a TAGS filter to apply to the set of content to be downloaded filteredList = FilterTagSet<SiteDatasource>.KeepOnlyTagged( filteredList, exportOnlyWithThisTag, true); _statusLog.AddStatus("Download datasources count after tags filter: " + filteredList.Count.ToString()); ICollection<SiteDatasource> successfullExportSet = null; var datasourcePath = Path.Combine(exportToPath, "datasources"); FileIOHelper.CreatePathIfNeeded(datasourcePath); //----------------------------------------------------------- //Download the data sources //----------------------------------------------------------- //If we are going to write out metadata for each download, then create the object that lets us look up the owner of each workbook KeyedLookup<SiteUser> contentOwnerLookup = null; if ((generateInfoFile) && (siteUsers != null)) { contentOwnerLookup = new KeyedLookup<SiteUser>(siteUsers); } try { var datasourceDownloads = new DownloadDatasources( _onlineUrls, onlineLogin, filteredList, datasourcePath, projectsList, generateInfoFile, contentOwnerLookup); successfullExportSet = datasourceDownloads.ExecuteRequest(); } catch (Exception exDatasourceDownload) { _statusLog.AddError("Error during datasource download, " + exDatasourceDownload.ToString()); } //-------------------------------------------------------------------------------- //Do we want to remove tags from successfully downloaded content? //-------------------------------------------------------------------------------- if ((successfullExportSet != null) && (deleteTagAfterExport) && (!string.IsNullOrWhiteSpace(exportOnlyWithThisTag))) { Execute_DeleteTagFromDatasources(onlineLogin, successfullExportSet, exportOnlyWithThisTag); } }
/// <summary> /// Download the data sources /// </summary> /// <param name="onlineLogin"></param> private void Execute_DownloadDatasources( TableauServerSignIn onlineLogin, string exportToPath, IProjectsList projectsList, SiteProject singleProjectIdFilter = null, string exportOnlyWithThisTag = null, bool deleteTagAfterExport = false) { _statusLog.AddStatusHeader("Download datasources"); ICollection <SiteDatasource> datasourcesList = null; try { //Get the list of datasources var datasourcesManager = new DownloadDatasourcesList(_onlineUrls, onlineLogin); datasourcesManager.ExecuteRequest(); datasourcesList = datasourcesManager.Datasources; } catch (Exception exGetContentList) { _statusLog.AddError("Error querying for list of datasources, " + exGetContentList.Message.ToString()); } if (datasourcesList == null) { _statusLog.AddError("Aborting datasources download"); return; } //==================================================================================================== //Apply filters to the list of content to see if we need to reduce the set of content to be downloaded //==================================================================================================== var filteredList = datasourcesList; _statusLog.AddStatus("Download datasources count before filters: " + filteredList.Count.ToString()); //See if we have a PROJECTS filter to apply to the set of content to download filteredList = FilterProjectMembership <SiteDatasource> .KeepOnlyProjectMembers( filteredList, singleProjectIdFilter, true); _statusLog.AddStatus("Download datasources count after projects filter: " + filteredList.Count.ToString()); //See if we have a TAGS filter to apply to the set of content to be downloaded filteredList = FilterTagSet <SiteDatasource> .KeepOnlyTagged( filteredList, exportOnlyWithThisTag, true); _statusLog.AddStatus("Download datasources count after tags filter: " + filteredList.Count.ToString()); ICollection <SiteDatasource> successfullExportSet = null; var datasourcePath = Path.Combine(exportToPath, "datasources"); FileIOHelper.CreatePathIfNeeded(datasourcePath); //----------------------------------------------------------- //Download the data sources //----------------------------------------------------------- try { var datasourceDownloads = new DownloadDatasources( _onlineUrls, onlineLogin, filteredList, datasourcePath, projectsList); successfullExportSet = datasourceDownloads.ExecuteRequest(); } catch (Exception exDatasourceDownload) { _statusLog.AddError("Error during datasource download, " + exDatasourceDownload.ToString()); } //-------------------------------------------------------------------------------- //Do we want to remove tags from successfully downloaded content? //-------------------------------------------------------------------------------- if ((successfullExportSet != null) && (deleteTagAfterExport) && (!string.IsNullOrWhiteSpace(exportOnlyWithThisTag))) { Execute_DeleteTagFromDatasources(onlineLogin, successfullExportSet, exportOnlyWithThisTag); } }