public Url_FinalizeDataSourcePublish ( TableauServerSignIn, logInInfo, string uploadSession, string datasourceType ) : string | ||
logInInfo | TableauServerSignIn, | |
uploadSession | string | |
datasourceType | string | |
Результат | string |
/// <summary> /// After a file has been uploaded in chunks, we need to make a call to COMMIT the file to server as a published Data Source /// </summary> /// <param name="uploadSessionId"></param> /// <param name="publishedContentName"></param> private SiteDatasource FinalizePublish( string uploadSessionId, string publishedContentName, string publishedContentType, string projectId, CredentialManager.Credential dbCredentials) { //See definition: http://onlinehelp.tableau.com/current/api/rest_api/en-us/help.htm#REST/rest_api_ref.htm#Publish_Datasource%3FTocPath%3DAPI%2520Reference%7C_____29 var sb = new StringBuilder(); var xmlWriter = XmlWriter.Create(sb, XmlHelper.XmlSettingsForWebRequests); xmlWriter.WriteStartElement("tsRequest"); xmlWriter.WriteStartElement("datasource"); xmlWriter.WriteAttributeString("name", publishedContentName); //If we have an associated database credential, write it out if (dbCredentials != null) { CredentialXmlHelper.WriteCredential( xmlWriter, dbCredentials); } xmlWriter.WriteStartElement("project"); //<project> xmlWriter.WriteAttributeString("id", projectId); xmlWriter.WriteEndElement(); //</project> xmlWriter.WriteEndElement(); // </datasource> //Currently not supporting <connectionCredentials> xmlWriter.WriteEndElement(); // </tsRequest> xmlWriter.Close(); var xmlText = sb.ToString(); //Get the XML text out //Generate the MIME message var mimeGenerator = new MimeWriterXml(xmlText); //Create a web request to push the var urlFinalizeUpload = _onlineUrls.Url_FinalizeDataSourcePublish(_onlineSession, uploadSessionId, publishedContentType); //NOTE: The publish finalization step can take several minutes, because server needs to unpack the uploaded ZIP and file it away. // For this reason, we pass in a long timeout var webRequest = this.CreateAndSendMimeLoggedInRequest(urlFinalizeUpload, "POST", mimeGenerator, TableauServerWebClient.DefaultLongRequestTimeOutMs); var xmlDoc = GetWebReponseLogErrors_AsXmlDoc(webRequest, "finalize datasource publish"); //Get all the datasource node from the response var nsManager = XmlHelper.CreateTableauXmlNamespaceManager("iwsOnline"); var dataSourceXml = xmlDoc.SelectSingleNode("//iwsOnline:datasource", nsManager); try { return(new SiteDatasource(dataSourceXml)); } catch (Exception parseXml) { StatusLog.AddError("Data source upload, error parsing XML response " + parseXml.Message + "\r\n" + dataSourceXml.InnerXml); return(null); } }