示例#1
0
        private void addButton_Click(object sender, EventArgs e)
        {
            var hostnameValidation    = UserInputValidator.ValidateNetworkHostname(hostnameTextBox.Text);
            var portValidation        = UserInputValidator.ValidateNetworkPortNumber(portTextBox.Text);
            var apiKeyValidation      = UserInputValidator.ValidateSyncthingApiKey(apiKeyTextBox.Text);
            var displayNameValidation = UserInputValidator.ValidateSyncthingDisplayName(customNameTextBox.Text);

            var errorMessages = new List <string>();

            // Validate port number
            if (!portValidation.IsValid)
            {
                errorMessages.Add(portValidation.Message);
            }

            // Validate hostname
            if (!hostnameValidation.IsValid)
            {
                errorMessages.Add(hostnameValidation.Message);
            }

            // Validate API key
            if (!apiKeyValidation.IsValid)
            {
                errorMessages.Add(apiKeyValidation.Message);
            }

            if (errorMessages.Count > 0)
            {
                MetroMessageBox.Show(this, String.Join(Environment.NewLine, errorMessages),
                                     "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                return;
            }

            var instance = new ManagedInstance
            {
                UseHttps = useHttpsToggle.Checked,
                ApiKey   = apiKeyValidation.ValidatedValue
            };

            instance.PossibleEndpoints.Add(new RestEndpoint
            {
                Hostname   = hostnameValidation.ValidatedValue,
                Port       = portValidation.ValidatedValue,
                Priority   = 100,
                IsPingable = true
            });

            // Assign display name
            if (displayNameValidation.IsValid)
            {
                instance.CustomName = customNameTextBox.Text.Trim();
            }

            Log.Logger.Information("New Syncthing instance created: {@Instance}", instance);

            Singleton <SyncthingInstanceManager> .Instance.Add(instance);

            AppSettings.Save(ParentForm);

            Close();
        }