static private ReadSettings ( SettingsDictionary settings, ILogger logger ) : string>.IDictionary |
||
settings | SettingsDictionary | |
logger | ILogger | |
Результат | string>.IDictionary |
internal static IDictionary<string, string> ReadSettings(SettingsDictionary settings, ILogger logger)
{
IDictionary<string, string> config = new Dictionary<string, string>();
foreach (KeyValuePair<string, string> setting in settings)
{
string key = setting.Key;
if (key.Length > ConfigKeyPrefix.Length && key.StartsWith(ConfigKeyPrefix, StringComparison.OrdinalIgnoreCase))
{
// Extract receiver name
string receiver = key.Substring(ConfigKeyPrefix.Length);
// Parse values
string[] segments = setting.Value.SplitAndTrim(',');
foreach (string segment in segments)
{
string[] values = segment.SplitAndTrim('=');
if (values.Length == 1)
{
AddKey(config, logger, receiver, string.Empty, values[0]);
}
else if (values.Length == 2)
{
AddKey(config, logger, receiver, values[0], values[1]);
}
else
{
string msg = string.Format(CultureInfo.CurrentCulture, ReceiverResources.Config_BadValue, key);
logger.Error(msg);
throw new InvalidOperationException(msg);
}
}
}
}
if (config.Count == 0)
{
string format = ConfigKeyPrefix + "<receiver>";
string msg = string.Format(CultureInfo.CurrentCulture, ReceiverResources.Config_NoConfig, format);
logger.Error(msg);
}
return config;
}
public void ReadSettings_Parses_ValidValues(IDictionary <string, string> input, IDictionary <string, string> expected) { // Arrange SettingsDictionary settings = GetSettings(input); // Act IDictionary <string, string> actual = WebHookReceiverConfig.ReadSettings(settings, logger: null); // Assert Assert.Equal(expected, actual); }