Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
        }