view ServerMonitor/Controls/HttpCheckControl.cs @ 31:88ca7e4fc023

Allow running a file check on a directory.
author Brad Greco <brad@bgreco.net>
date Sun, 16 Jun 2019 16:54:46 -0400
parents b713b9db4c82
children
line wrap: on
line source

using System;

namespace ServerMonitorApp
{
    /// <summary>Control for editing an HTTP check.</summary>
    [CheckType(typeof(HttpCheck))]
    public partial class HttpCheckControl : CheckControl
    {
        public HttpCheckControl()
        {
            InitializeComponent();
        }

        private void HttpCheckControl_Load(object sender, System.EventArgs e)
        {
            // Initialize the combo boxes to non-empty values.
            MethodComboBox.SelectedIndex = 0;
        }

        /// <summary>Sets the values of the controls from a check's properties.</summary>
        public override void LoadCheck(Check check1)
        {
            HttpCheck check = (HttpCheck)check1;
            UrlTextBox.Text = check.Url;
            MethodComboBox.SelectedItem = check.Method ?? "GET";
            ResponseCodeCheckBox.Checked = check.CheckResponseCode;
            ResponseCodeTextBox.Text = check.ResponseCode.ToString();
            ResponseLengthCheckbox.Checked = check.CheckResponseLength;
            ResponseLengthMinTextBox.Text = check.ResponseLengthMin;
            ResponseLengthMaxTextBox.Text = check.ResponseLengthMax;
            ResponseBodyCheckBox.Checked = check.CheckResponseBody;
            ResponseBodyComboBox.SelectedIndex = (int)check.ResponseBodyMatchType;
            ResponseBodyTextBox.Text = check.ResponseBodyPattern;
            ResponseBodyRegexCheckBox.Checked = check.ResponseBodyUseRegex;
        }

        /// <summary>Updates the properties of a check from user input.</summary>
        public override void UpdateCheck(Check check1)
        {
            HttpCheck check = (HttpCheck)check1;
            check.Url = UrlTextBox.Text.Trim();
            check.Method = MethodComboBox.SelectedItem.ToString();
            check.CheckResponseCode = ResponseCodeCheckBox.Checked;
            try
            {
                check.ResponseCode = int.Parse(ResponseCodeTextBox.Text);
            }
            catch
            {
                throw new UpdateCheckException("Response code must be an integer.");
            }
            check.CheckResponseLength = ResponseLengthCheckbox.Checked;
            check.ResponseLengthMin = ResponseLengthMinTextBox.Text;
            check.ResponseLengthMax = ResponseLengthMaxTextBox.Text;
            check.CheckResponseBody = ResponseBodyCheckBox.Checked;
            check.ResponseBodyMatchType = (MatchType)ResponseBodyComboBox.SelectedIndex;
            check.ResponseBodyPattern = ResponseBodyTextBox.Text;
            check.ResponseBodyUseRegex = ResponseBodyRegexCheckBox.Checked;
        }

        private void MethodComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (MethodComboBox.SelectedIndex == 1)
            {
                ResponseBodyCheckBox.Checked = false;
                ResponseBodyCheckBox.Enabled = false;
            }
            else
            {
                ResponseBodyCheckBox.Enabled = true;
            }
        }
    }
}