protected ICollection <SiteWorkbook> DownloadWorkbooksList() { var workbooksList = new DownloadWorkbooksList(Urls, Login, HttpClientFactory); workbooksList.ExecuteRequest(); return(workbooksList.Workbooks); }
/// <summary> /// For this type of content, change the ownership from one user to another /// </summary> /// <param name="siteSignIn"></param> /// <param name="thisOwnershipChange"></param> /// <param name="userOldOwner"></param> /// <param name="userNewOwner"></param> private void Execute_ProvisionOwnership_SingleUserChange_Workbooks(TableauServerSignIn siteSignIn, SiteUser userOldOwner, SiteUser userNewOwner) { //Get the list of workbooks (if any) owned by the old user var inventoryDownloader = new DownloadWorkbooksList(siteSignIn, userOldOwner.Id, true); inventoryDownloader.ExecuteRequest(); var listContent = inventoryDownloader.Workbooks; if ((listContent == null) || (listContent.Count < 1)) { _statusLogs.AddStatus("No work to do. No workbooks owned by: " + userOldOwner.Name); return; } //Change the ownership of each of these content items foreach (var contentItem in listContent) { if (string.Compare(contentItem.OwnerId, userOldOwner.Id, true) == 0) { Execute_ProvisionOwnership_SingleUserChange_SingleWorkbook(siteSignIn, contentItem, userOldOwner, userNewOwner); } else { IwsDiagnostics.Assert(false, "201202-607: Expected not to have content not owned by user"); } } }
public void DownloadWorkbooksTest() { var url = new TableauServerUrls(ServerProtocol.Http, "10.107.0.240:8000", "ITCostSurvey", 10, ServerVersion.Server9); var signIn = new TableauServerSignIn( url, "public", "tableau1user%", new TaskStatusLogs()); signIn.ExecuteRequest(); var a = new DownloadWorkbooksList(url, signIn); a.ExecuteRequest(); Assert.AreEqual(2, a.Workbooks.Count); var b = new DownloadProjectsList(url, signIn); b.ExecuteRequest(); Assert.AreEqual(1, b.Projects.Count()); signIn = new TableauServerSignIn( new TableauServerUrls(ServerProtocol.Http, "10.107.0.240:8000", "ITCostSurvey", 10, ServerVersion.Server9), "tableauAdmin", "ta1user%", new TaskStatusLogs()); signIn.ExecuteRequest(); a = new DownloadWorkbooksList( new TableauServerUrls(ServerProtocol.Http, "10.107.0.240:8000", "ITCostSurvey", 10, ServerVersion.Server9), signIn); a.ExecuteRequest(); Assert.AreEqual(4, a.Workbooks.Count); foreach (var workbook in a.Workbooks) { var viewQuery = new DownloadViewsForWorkbookList(workbook.Id, url, signIn); viewQuery.ExecuteRequest(); Assert.AreEqual(1, viewQuery.Views.Count); foreach (var view in viewQuery.Views) { var thumbnailQuery = new DownloadView(url, signIn); var result = thumbnailQuery.GetPreviewImage(workbook.Id, view.Id); Assert.AreNotEqual(0, result.Length); } } b = new DownloadProjectsList(url, signIn); b.ExecuteRequest(); Assert.AreEqual(1, b.Projects.Count()); var siteViews = new DownloadViewsForSiteList(url, signIn); siteViews.ExecuteRequest(); Assert.AreEqual(0, siteViews.Views.Count); }
/// <summary> /// Queries for the set of workbooks that the specified user can access /// </summary> /// <param name="signIn"></param> /// <param name="queryForUserId"></param> /// <returns></returns> public static DownloadWorkbooksList CreateAndExecute(TableauServerSignIn signIn, string queryForUserId) { if (!RegExHelper.IsValidIdTableauContentId(queryForUserId)) { throw new Exception("1030-910: User id syntax invalid: " + queryForUserId); } var downloader = new DownloadWorkbooksList(signIn, queryForUserId); downloader.ExecuteRequest(); return(downloader); }
/// <summary> /// Download the data sources /// </summary> /// <param name="onlineLogin"></param> private void Execute_DownloadWorkbooksList(TableauServerSignIn onlineLogin) { _statusLog.AddStatusHeader("Download workbooks list"); try { //Get the list of workbooks var workbooks = new DownloadWorkbooksList(_onlineUrls, onlineLogin); workbooks.ExecuteRequest(); //Store them in our object _downloadedList_Workbooks = workbooks.Workbooks; } catch (Exception exDownload) { _statusLog.AddError("Error during workbooks list download, " + exDownload.ToString()); } }
/// <summary> /// Download the workbooks /// </summary> /// <param name="onlineLogin">logged in session</param> /// <param name="exportToPath">local path to export to</param> /// <param name="projectsList">project id/name mapping</param> /// <param name="singleProjectIdFilter">if specified, export only from a single project</param> /// <param name="exportOnlyWithThisTag">if specified, export only content with this tag</param> /// <param name="deleteTagAfterExport">TRUE: Remove the server-side tag from exported content (only valid if we have an export tag)</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_DownloadWorkbooks( TableauServerSignIn onlineLogin, string exportToPath, IProjectsList projectsList, SiteProject singleProjectIdFilter = null, string exportOnlyWithThisTag = null, bool deleteTagAfterExport = false, bool generateInfoFile = false, IEnumerable<SiteUser> siteUsers = null ) { var onlineUrls = _onlineUrls; _statusLog.AddStatusHeader("Download workbooks"); //Get the UserID we need to use for the workbooks query. var explicitUserId = onlineLogin.UserId; //See if we have a default user id //=================================================================================== //Workbooks... //=================================================================================== ICollection<SiteWorkbook> workbooksList = null; try { var workbooks = new DownloadWorkbooksList(onlineUrls, onlineLogin, explicitUserId); //Query for the list of workbook workbooks.ExecuteRequest(); workbooksList = workbooks.Workbooks; } catch (Exception exWorkbooksList) { _statusLog.AddError("Error querying for list of workbooks, " + exWorkbooksList.Message.ToString()); return; } //No list of workbooks? Exit. if(workbooksList == null) { _statusLog.AddStatus("Aborting workbooks 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 = workbooksList; _statusLog.AddStatus("Download workbooks count before filters: " + filteredList.Count.ToString()); //See if we have a PROJECTS filter to apply to the set of content to be downloaded filteredList = FilterProjectMembership<SiteWorkbook>.KeepOnlyProjectMembers( filteredList, singleProjectIdFilter, true); _statusLog.AddStatus("Download workbooks 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<SiteWorkbook>.KeepOnlyTagged( filteredList, exportOnlyWithThisTag, true); _statusLog.AddStatus("Download workbooks count after tags filter: " + filteredList.Count.ToString()); //----------------------------------------------------------- //Download the workbooks //----------------------------------------------------------- var workbookPath = Path.Combine(exportToPath, "workbooks"); ICollection<SiteWorkbook> successfullExportSet = null; FileIOHelper.CreatePathIfNeeded(workbookPath); //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> workbookOwnerLookup = null; if ((generateInfoFile) && (siteUsers != null)) { workbookOwnerLookup = new KeyedLookup<SiteUser>(siteUsers); } //Do the downloads...... try { //Create the workbooks downloader var workbookDownloads = new DownloadWorkbooks( onlineUrls, onlineLogin, filteredList, workbookPath, projectsList, generateInfoFile, workbookOwnerLookup); successfullExportSet = workbookDownloads.ExecuteRequest(); } catch (Exception exWorkbooksDownload) { _statusLog.AddError("Error during workbooks download, " + exWorkbooksDownload.ToString()); } //-------------------------------------------------------------------------------- //Do we want to remove tags from successfully downloaded content? //-------------------------------------------------------------------------------- if ((successfullExportSet != null) && (deleteTagAfterExport) && (!string.IsNullOrWhiteSpace(exportOnlyWithThisTag))) { Execute_DeleteTagFromWorkbooks(onlineLogin, successfullExportSet, exportOnlyWithThisTag); } }
/// <summary> /// Download the workbooks /// </summary> /// <param name="onlineLogin">logged in session</param> /// <param name="exportToPath">local path to export to</param> /// <param name="projectsList">project id/name mapping</param> /// <param name="singleProjectIdFilter">if specified, export only from a single project</param> /// <param name="exportOnlyWithThisTag">if specified, export only content with this tag</param> /// <param name="deleteTagAfterExport">TRUE: Remove the server-side tag from exported content (only valid if we have an export tag)</param> private void Execute_DownloadWorkbooks( TableauServerSignIn onlineLogin, string exportToPath, IProjectsList projectsList, SiteProject singleProjectIdFilter = null, string exportOnlyWithThisTag = null, bool deleteTagAfterExport = false) { var onlineUrls = _onlineUrls; _statusLog.AddStatusHeader("Download workbooks"); //Get the UserID we need to use for the workbooks query. var explicitUserId = onlineLogin.UserId; //See if we have a default user id //=================================================================================== //Workbooks... //=================================================================================== ICollection <SiteWorkbook> workbooksList = null; try { var workbooks = new DownloadWorkbooksList(onlineUrls, onlineLogin, explicitUserId); //Query for the list of workbook workbooks.ExecuteRequest(); workbooksList = workbooks.Workbooks; } catch (Exception exWorkbooksList) { _statusLog.AddError("Error querying for list of workbooks, " + exWorkbooksList.Message.ToString()); return; } //No list of workbooks? Exit. if (workbooksList == null) { _statusLog.AddStatus("Aborting workbooks 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 = workbooksList; _statusLog.AddStatus("Download workbooks count before filters: " + filteredList.Count.ToString()); //See if we have a PROJECTS filter to apply to the set of content to be downloaded filteredList = FilterProjectMembership <SiteWorkbook> .KeepOnlyProjectMembers( filteredList, singleProjectIdFilter, true); _statusLog.AddStatus("Download workbooks 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 <SiteWorkbook> .KeepOnlyTagged( filteredList, exportOnlyWithThisTag, true); _statusLog.AddStatus("Download workbooks count after tags filter: " + filteredList.Count.ToString()); //----------------------------------------------------------- //Download the workbooks //----------------------------------------------------------- var workbookPath = Path.Combine(exportToPath, "workbooks"); ICollection <SiteWorkbook> successfullExportSet = null; FileIOHelper.CreatePathIfNeeded(workbookPath); try { var workbookDownloads = new DownloadWorkbooks(onlineUrls, onlineLogin, filteredList, workbookPath, projectsList); successfullExportSet = workbookDownloads.ExecuteRequest(); } catch (Exception exWorkbooksDownload) { _statusLog.AddError("Error during workbooks download, " + exWorkbooksDownload.ToString()); } //-------------------------------------------------------------------------------- //Do we want to remove tags from successfully downloaded content? //-------------------------------------------------------------------------------- if ((successfullExportSet != null) && (deleteTagAfterExport) && (!string.IsNullOrWhiteSpace(exportOnlyWithThisTag))) { Execute_DeleteTagFromWorkbooks(onlineLogin, successfullExportSet, exportOnlyWithThisTag); } }
public void ViewPdfLinkTest() { var url = new TableauServerUrls(ServerProtocol.Http, "10.107.0.240:8000", "ITCostSurvey", 10, ServerVersion.Server9); var signIn = new TableauServerSignIn( url, "tableauAdmin", "ta1user%", new TaskStatusLogs()); signIn.ExecuteRequest(); var workbooks = new DownloadWorkbooksList( new TableauServerUrls(ServerProtocol.Http, "10.107.0.240:8000", "ITCostSurvey", 10, ServerVersion.Server9), signIn); workbooks.ExecuteRequest(); var workbook = workbooks.Workbooks.First(); var viewQuery = new DownloadViewsForWorkbookList(workbook.Id, url, signIn); viewQuery.ExecuteRequest(); var view = viewQuery.Views.First(); var a = new TrustedUrls(workbook.Name.Replace(" ", ""), view.Name.Replace(" ", ""), url, signIn); var exportPdfUrl = a.GetExportPdfUrl(); Assert.IsFalse(string.IsNullOrEmpty(exportPdfUrl)); var thumbnailUrl = a.GetPreviewImageUrl(); Assert.IsFalse(string.IsNullOrEmpty(thumbnailUrl)); var viewUrl = a.GetTrustedViewUrl(); Assert.IsFalse(string.IsNullOrEmpty(viewUrl)); var client = new WebClient(); var data = client.DownloadData(exportPdfUrl); Assert.IsNotNull(data); Assert.IsTrue(data.Any()); data = null; var downloadView = new DownloadView(url, signIn); data = downloadView.GetPreviewImage(workbook.Id, view.Id); Assert.IsNotNull(data); Assert.IsTrue(data.Any()); a.AddViewParameter("Gabba", "1"); a.AddViewParameter("Hey", "2"); exportPdfUrl = a.GetExportPdfUrl(); Assert.IsTrue(exportPdfUrl.Contains("?")); Assert.IsTrue(exportPdfUrl.EndsWith("Gabba=1&Hey=2")); thumbnailUrl = a.GetPreviewImageUrl(); Assert.IsTrue(thumbnailUrl.Contains("?")); Assert.IsTrue(thumbnailUrl.EndsWith("Gabba=1&Hey=2")); a.HideToolbar = true; viewUrl = a.GetTrustedViewUrl(); Assert.IsTrue(viewUrl.EndsWith("&:toolbar=no")); a.HideToolbar = null; viewUrl = a.GetTrustedViewUrl(); Assert.IsFalse(viewUrl.EndsWith("&:toolbar=no")); a.HideToolbar = false; viewUrl = a.GetTrustedViewUrl(); Assert.IsFalse(viewUrl.EndsWith("&:toolbar=no")); a.HideTabs = true; viewUrl = a.GetTrustedViewUrl(); Assert.IsTrue(viewUrl.EndsWith("&:tabs=no")); a.HideTabs = null; viewUrl = a.GetTrustedViewUrl(); Assert.IsFalse(viewUrl.EndsWith("&:tabs=no")); a.HideTabs = false; viewUrl = a.GetTrustedViewUrl(); Assert.IsFalse(viewUrl.EndsWith("&:tabs=no")); a = new TrustedUrls(workbook.Name.Replace(" ", ""), view.Name.Replace(" ", ""), url, signIn); a.HideToolbar = true; viewUrl = a.GetTrustedViewUrl(); Assert.IsTrue(viewUrl.EndsWith("?:toolbar=no")); a.HideToolbar = null; viewUrl = a.GetTrustedViewUrl(); Assert.IsFalse(viewUrl.EndsWith("?:toolbar=no")); a.HideToolbar = false; viewUrl = a.GetTrustedViewUrl(); Assert.IsFalse(viewUrl.EndsWith("?:toolbar=no")); a.HideTabs = true; viewUrl = a.GetTrustedViewUrl(); Assert.IsTrue(viewUrl.EndsWith("?:tabs=no")); a.HideTabs = null; viewUrl = a.GetTrustedViewUrl(); Assert.IsFalse(viewUrl.EndsWith("?:tabs=no")); a.HideTabs = false; viewUrl = a.GetTrustedViewUrl(); Assert.IsFalse(viewUrl.EndsWith("?:tabs=no")); a.HideToolbar = true; a.HideTabs = true; viewUrl = a.GetTrustedViewUrl(); Assert.IsTrue(viewUrl.EndsWith("?:tabs=no&:toolbar=no")); }