public IClient Create(ClientSettings settings) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } // special consideration for obsolete ClientType values that may appear in hfmx configuration files if (!_clientFactories.TryGetValue(settings.ClientType, out var factory)) { return(null); } if (!ClientSettings.ValidateName(settings.Name)) { throw new ArgumentException($"Client name {settings.Name} is not valid.", nameof(settings)); } if (String.IsNullOrWhiteSpace(settings.Server)) { throw new ArgumentException("Client server (host) name is empty.", nameof(settings)); } if (!TcpPort.Validate(settings.Port)) { throw new ArgumentException($"Client server (host) port {settings.Port} is not valid.", nameof(settings)); } IClient client = factory.Create(); if (client != null) { client.Settings = settings; } return(client); }
public void ClientSettings_ValidateName_Tests() { Assert.IsTrue(ClientSettings.ValidateName("+a+")); Assert.IsTrue(ClientSettings.ValidateName("=a=")); Assert.IsTrue(ClientSettings.ValidateName("-a-")); Assert.IsTrue(ClientSettings.ValidateName("_a_")); Assert.IsTrue(ClientSettings.ValidateName("$a$")); Assert.IsTrue(ClientSettings.ValidateName("&a&")); Assert.IsTrue(ClientSettings.ValidateName("^a^")); Assert.IsTrue(ClientSettings.ValidateName("[a[")); Assert.IsTrue(ClientSettings.ValidateName("]a]")); Assert.IsFalse(ClientSettings.ValidateName("}a}")); Assert.IsFalse(ClientSettings.ValidateName("\\a\\")); Assert.IsFalse(ClientSettings.ValidateName("|a|")); Assert.IsFalse(ClientSettings.ValidateName(";a;")); Assert.IsFalse(ClientSettings.ValidateName(":a:")); Assert.IsFalse(ClientSettings.ValidateName("\'a\'")); Assert.IsFalse(ClientSettings.ValidateName("\"a\"")); Assert.IsFalse(ClientSettings.ValidateName(",a,")); Assert.IsFalse(ClientSettings.ValidateName("<a<")); Assert.IsFalse(ClientSettings.ValidateName(">a>")); Assert.IsFalse(ClientSettings.ValidateName("/a/")); Assert.IsFalse(ClientSettings.ValidateName("?a?")); Assert.IsFalse(ClientSettings.ValidateName("`a`")); Assert.IsFalse(ClientSettings.ValidateName("~a~")); Assert.IsFalse(ClientSettings.ValidateName("!a!")); Assert.IsFalse(ClientSettings.ValidateName("@a@")); Assert.IsFalse(ClientSettings.ValidateName("#a#")); Assert.IsFalse(ClientSettings.ValidateName("%a%")); Assert.IsFalse(ClientSettings.ValidateName("*a*")); Assert.IsFalse(ClientSettings.ValidateName("(a(")); Assert.IsFalse(ClientSettings.ValidateName(")a)")); Assert.IsFalse(ClientSettings.ValidateName(String.Empty)); Assert.IsFalse(ClientSettings.ValidateName(null)); }