in src/MIMConfigDocumenter/Extensible2ConnectorDocumenter.cs [136:207]
protected DataTable GetExtensible2ConfigParametersTable(IEnumerable<XElement> parameterDefinitions, IEnumerable<XElement> parameterValues)
{
Logger.Instance.WriteMethodEntry();
try
{
var parametersTable = new DataTable("ConfigParametersTable") { Locale = CultureInfo.InvariantCulture };
var column1 = new DataColumn("DisplayOrder", typeof(int));
var column2 = new DataColumn("Setting");
var column3 = new DataColumn("Configuration");
var column4 = new DataColumn("Encrypted?");
parametersTable.Columns.Add(column1);
parametersTable.Columns.Add(column2);
parametersTable.Columns.Add(column3);
parametersTable.Columns.Add(column4);
parametersTable.PrimaryKey = new[] { column1, column2 };
if (parameterDefinitions != null && parameterValues != null)
{
var parameterIndex = -1;
foreach (var parameterDefinition in parameterDefinitions)
{
++parameterIndex;
var parameterName = (string)parameterDefinition.Element("name");
var parameterType = (string)parameterDefinition.Element("type") ?? string.Empty;
var parameterValue = string.Empty;
foreach (var parameter in parameterValues)
{
if ((string)parameter.Attribute("name") == parameterName)
{
parameterValue = (string)parameter;
break;
}
}
var encrypted = parameterType.StartsWith("encrypted", StringComparison.OrdinalIgnoreCase);
switch (parameterType.ToUpperInvariant())
{
case "FILE":
try
{
parameterValue = Encoding.UTF8.GetString(Convert.FromBase64String(parameterValue));
}
catch (Exception e)
{
Logger.Instance.WriteError(e.ToString());
}
break;
case "CHECKBOX":
parameterValue = parameterValue.Equals("1", StringComparison.OrdinalIgnoreCase) || parameterValue.Equals("true", StringComparison.OrdinalIgnoreCase) ? "Yes" : "No";
break;
}
Documenter.AddRow(parametersTable, new object[] { parameterIndex, parameterName, encrypted ? "******" : WebUtility.HtmlEncode(parameterValue ?? string.Empty), encrypted ? "Yes" : "No" });
}
parametersTable.AcceptChanges();
}
return parametersTable;
}
finally
{
Logger.Instance.WriteMethodEntry();
}
}