From 6d2087172a255793d67a6f5ab10c3809a01bfc6f Mon Sep 17 00:00:00 2001 From: Kai Dehling Date: Wed, 29 Mar 2023 15:02:30 +0200 Subject: [PATCH] Fix #59 Change request for workbook publishing --- .../RESTHelpers/CredentialManager.Connection.cs | 16 ++++++++++++++++ .../RESTHelpers/CredentialManager.Credential.cs | 4 +++- TabRESTMigrate/RESTHelpers/CredentialManager.cs | 4 ++-- .../RESTHelpers/CredentialManager_static.cs | 6 ++++-- .../RESTHelpers/CredentialXmlHelper.cs | 14 +++++++++++--- TabRESTMigrate/RESTRequests/UploadWorkbooks.cs | 10 +++++----- .../_SampleFiles/CredentialExample.xml | 6 +++--- 7 files changed, 44 insertions(+), 16 deletions(-) create mode 100644 TabRESTMigrate/RESTHelpers/CredentialManager.Connection.cs diff --git a/TabRESTMigrate/RESTHelpers/CredentialManager.Connection.cs b/TabRESTMigrate/RESTHelpers/CredentialManager.Connection.cs new file mode 100644 index 0000000..c24a5ac --- /dev/null +++ b/TabRESTMigrate/RESTHelpers/CredentialManager.Connection.cs @@ -0,0 +1,16 @@ +partial class CredentialManager +{ + internal class Connection + { + public readonly string ServerAddress; + + public readonly string ServerPort; + + public Connection(string serverAddress, string serverPort = null) + { + this.ServerAddress = serverAddress; + this.ServerPort = serverPort; + } + } + +} diff --git a/TabRESTMigrate/RESTHelpers/CredentialManager.Credential.cs b/TabRESTMigrate/RESTHelpers/CredentialManager.Credential.cs index 52e7318..6727593 100644 --- a/TabRESTMigrate/RESTHelpers/CredentialManager.Credential.cs +++ b/TabRESTMigrate/RESTHelpers/CredentialManager.Credential.cs @@ -5,12 +5,14 @@ internal class Credential public readonly string Name; public readonly string Password; public readonly bool IsEmbedded; + public readonly Connection Connection; - public Credential(string name, string password, bool isEmbedded) + public Credential(string name, string password, bool isEmbedded, Connection connection = null) { this.Name = name; this.Password = password; this.IsEmbedded = isEmbedded; + this.Connection = connection; } } diff --git a/TabRESTMigrate/RESTHelpers/CredentialManager.cs b/TabRESTMigrate/RESTHelpers/CredentialManager.cs index 35e265b..01fe271 100644 --- a/TabRESTMigrate/RESTHelpers/CredentialManager.cs +++ b/TabRESTMigrate/RESTHelpers/CredentialManager.cs @@ -58,10 +58,10 @@ private static Credential FindContentCredential(List list, strin /// /// /// - public void AddWorkbookCredential(string workbookName, string projectName, string credentialId, string password, bool isEmbedded) + public void AddWorkbookCredential(string workbookName, string projectName, string serverAddress, string serverPort, string credentialId, string password, bool isEmbedded) { _workbookCredentials.Add(new CredentialNode( - workbookName, projectName, new Credential(credentialId, password, isEmbedded))); + workbookName, projectName, new Credential(credentialId, password, isEmbedded, new Connection(serverAddress, serverPort)))); } /// diff --git a/TabRESTMigrate/RESTHelpers/CredentialManager_static.cs b/TabRESTMigrate/RESTHelpers/CredentialManager_static.cs index 2675e45..a043b37 100644 --- a/TabRESTMigrate/RESTHelpers/CredentialManager_static.cs +++ b/TabRESTMigrate/RESTHelpers/CredentialManager_static.cs @@ -49,8 +49,10 @@ private static void helper_parseCredentialNode(CredentialManager credentialManag { var contentType = XmlHelper.ReadTextAttribute(credentialNode, "contentType", ""); var contentProjectName = XmlHelper.ReadTextAttribute(credentialNode, "contentProjectName"); - var contentName = XmlHelper.ReadTextAttribute(credentialNode, "contentName"); + var contentName = XmlHelper.ReadTextAttribute(credentialNode, "contentName"); + var serverAddress = XmlHelper.ReadTextAttribute(credentialNode, "serverAddress"); + var serverPort = XmlHelper.ReadTextAttribute(credentialNode, "serverPort"); var dbUserName = XmlHelper.ReadTextAttribute(credentialNode, "dbUser"); var dbPassword = XmlHelper.ReadTextAttribute(credentialNode, "dbPassword"); var isEmbedded = XmlHelper.ReadBooleanAttribute(credentialNode, "credentialIsEmbedded", false); @@ -63,7 +65,7 @@ private static void helper_parseCredentialNode(CredentialManager credentialManag if(contentType == "workbook") { - credentialManager.AddWorkbookCredential(contentName, contentProjectName, dbUserName, dbPassword, isEmbedded); + credentialManager.AddWorkbookCredential(contentName, contentProjectName, serverAddress, serverPort, dbUserName, dbPassword, isEmbedded); } else if(contentType == "datasource") { diff --git a/TabRESTMigrate/RESTHelpers/CredentialXmlHelper.cs b/TabRESTMigrate/RESTHelpers/CredentialXmlHelper.cs index d9ca260..7c3078e 100644 --- a/TabRESTMigrate/RESTHelpers/CredentialXmlHelper.cs +++ b/TabRESTMigrate/RESTHelpers/CredentialXmlHelper.cs @@ -14,7 +14,9 @@ static class CredentialXmlHelper /// public static void WriteCredential(XmlWriter xmlWriter, CredentialManager.Credential credential) { - WriteCredential(xmlWriter, credential.Name, credential.Password, credential.IsEmbedded); + CredentialManager.Connection connection = credential.Connection; + + WriteCredential(xmlWriter, connection.ServerAddress, connection.ServerPort, credential.Name, credential.Password, credential.IsEmbedded); } /// /// Writes out the credential element. Used in Workbook and Data Source publication @@ -23,15 +25,21 @@ public static void WriteCredential(XmlWriter xmlWriter, CredentialManager.Creden /// /// /// - public static void WriteCredential(XmlWriter xmlWriter, string connectionUserName, string password, bool isEmbedded) + public static void WriteCredential(XmlWriter xmlWriter, string serverAddress, string serverPort, string connectionUserName, string password, bool isEmbedded) { // - + xmlWriter.WriteStartElement("connection"); + xmlWriter.WriteAttributeString("serverAddress", serverAddress); + if (!"".Equals(serverPort)) + { + xmlWriter.WriteAttributeString("serverPort", serverPort); + } xmlWriter.WriteStartElement("connectionCredentials"); xmlWriter.WriteAttributeString("name", connectionUserName); xmlWriter.WriteAttributeString("password", password); XmlHelper.WriteBooleanAttribute(xmlWriter, "embed", isEmbedded); xmlWriter.WriteEndElement(); + xmlWriter.WriteEndElement(); } } diff --git a/TabRESTMigrate/RESTRequests/UploadWorkbooks.cs b/TabRESTMigrate/RESTRequests/UploadWorkbooks.cs index 96eea58..96089bf 100644 --- a/TabRESTMigrate/RESTRequests/UploadWorkbooks.cs +++ b/TabRESTMigrate/RESTRequests/UploadWorkbooks.cs @@ -572,15 +572,15 @@ private SiteWorkbook FinalizePublish( xmlWriter.WriteStartElement("workbook"); xmlWriter.WriteAttributeString("name", publishedContentName); xmlWriter.WriteAttributeString("showTabs", XmlHelper.BoolToXmlText(publishSettings.ShowTabs)); - + xmlWriter.WriteStartElement("connections"); //If we have an associated database credential, write it out - if (dbCredentials != null) + if (dbCredentials != null) { CredentialXmlHelper.WriteCredential( - xmlWriter, - dbCredentials); + xmlWriter, + dbCredentials); } - + xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("project"); // xmlWriter.WriteAttributeString("id", projectId); xmlWriter.WriteEndElement(); // diff --git a/TabRESTMigrate/_SampleFiles/CredentialExample.xml b/TabRESTMigrate/_SampleFiles/CredentialExample.xml index 78d03ac..6630fe3 100644 --- a/TabRESTMigrate/_SampleFiles/CredentialExample.xml +++ b/TabRESTMigrate/_SampleFiles/CredentialExample.xml @@ -1,6 +1,6 @@ - - - + + + \ No newline at end of file