public Url_UpdateWorkbook ( TableauServerSignIn, session, string workbookId ) : string | ||
session | TableauServerSignIn, | |
workbookId | string | |
return | string |
private SiteWorkbook ChangeContentOwner(string workbookId, string newOwnerId) { AppDiagnostics.Assert(!string.IsNullOrWhiteSpace(workbookId), "missing workbook id"); AppDiagnostics.Assert(!string.IsNullOrWhiteSpace(newOwnerId), "missing owner id"); //ref: https://onlinehelp.tableau.com/current/api/rest_api/en-us/help.htm#REST/rest_api_ref.htm#Update_Workbook%3FTocPath%3DAPI%2520Reference%7C_____84 var sb = new StringBuilder(); var xmlWriter = XmlWriter.Create(sb, XmlHelper.XmlSettingsForWebRequests); xmlWriter.WriteStartElement("tsRequest"); xmlWriter.WriteStartElement("workbook"); xmlWriter.WriteStartElement("owner"); xmlWriter.WriteAttributeString("id", newOwnerId); xmlWriter.WriteEndElement(); //</owner> xmlWriter.WriteEndElement(); //</workbook> xmlWriter.WriteEndElement(); // </tsRequest> xmlWriter.Close(); var xmlText = sb.ToString(); //Get the XML text out //Create a web request var urlUpdateWorkbook = _onlineUrls.Url_UpdateWorkbook(_onlineSession, workbookId); var webRequest = this.CreateLoggedInWebRequest(urlUpdateWorkbook, "PUT"); TableauServerRequestBase.SendPutContents(webRequest, xmlText); //Get the response var response = GetWebReponseLogErrors(webRequest, "update workbook (change owner)"); using (response) { var xmlDoc = GetWebResponseAsXml(response); //Get all the workbook nodes var nsManager = XmlHelper.CreateTableauXmlNamespaceManager("iwsOnline"); var xNodeWb = xmlDoc.SelectSingleNode("//iwsOnline:workbook", nsManager); try { return(new SiteWorkbook(xNodeWb)); } catch (Exception parseXml) { StatusLog.AddError("Change workbook owner, error parsing XML response " + parseXml.Message + "\r\n" + xNodeWb.InnerXml); return(null); } } }