Mercurial > servermonitor
diff ServerMonitor/Objects/HttpCheck.cs @ 0:3e1a2131f897
Initial commit. Ping check, scheduling, UI working. SSH check mostly working.
author | Brad Greco <brad@bgreco.net> |
---|---|
date | Mon, 31 Dec 2018 18:32:14 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ServerMonitor/Objects/HttpCheck.cs Mon Dec 31 18:32:14 2018 -0500 @@ -0,0 +1,135 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; + +namespace ServerMonitorApp +{ + [DisplayName("HTTP check"), Description("Check the result of an HTTP request"), DisplayWeight(1)] + public class HttpCheck : Check + { + public string Url { get; set; } + + public bool CheckResponseCode { get; set; } + + public int ResponseCode { get; set; } + + public bool CheckResponseLength { get; set; } + + public string ResponseLengthMin { get; set; } + + public string ResponseLengthMax { get; set; } + + public bool CheckResponseBody { get; set; } + + public MatchType ResponseBodyMatchType { get; set; } + + public string ResponseBodyPattern { get; set; } + + public bool ResponseBodyUseRegex { get; set; } + + protected override Task<CheckResult> ExecuteCheckAsync(CancellationToken token) + { + throw new NotImplementedException(); + } + + public override string Validate(bool saving = true) + { + string message = base.Validate(); + if (Url.IsNullOrEmpty()) + message += "URL cannot be blank." + Environment.NewLine; + if (!CheckResponseCode && !CheckResponseLength && !CheckResponseBody) + message += "At least one check must be enabled." + Environment.NewLine; + if (CheckResponseBody && ResponseBodyUseRegex) + { + try + { + Regex re = new Regex(ResponseBodyPattern); + } + catch (ArgumentException) + { + message += "Invalid regular expression for response body." + Environment.NewLine; + } + } + return message; + } + + //protected override CheckResult GetIntResult(int expectedValue, int resultValue, string description) + //{ + // CheckResult result = base.GetIntResult(expectedValue, resultValue, description); + + //} + +/* +100 Continue[RFC7231, Section 6.2.1] +101 Switching Protocols[RFC7231, Section 6.2.2] +102 Processing[RFC2518] +103 Early Hints[RFC8297] +200 OK[RFC7231, Section 6.3.1] +201 Created[RFC7231, Section 6.3.2] +202 Accepted[RFC7231, Section 6.3.3] +203 Non-Authoritative Information[RFC7231, Section 6.3.4] +204 No Content[RFC7231, Section 6.3.5] +205 Reset Content[RFC7231, Section 6.3.6] +206 Partial Content[RFC7233, Section 4.1] +207 Multi-Status[RFC4918] +208 Already Reported[RFC5842] +226 IM Used[RFC3229] +300 Multiple Choices[RFC7231, Section 6.4.1] +301 Moved Permanently[RFC7231, Section 6.4.2] +302 Found[RFC7231, Section 6.4.3] +303 See Other[RFC7231, Section 6.4.4] +304 Not Modified[RFC7232, Section 4.1] +305 Use Proxy[RFC7231, Section 6.4.5] +306 (Unused)[RFC7231, Section 6.4.6] +307 Temporary Redirect[RFC7231, Section 6.4.7] +308 Permanent Redirect[RFC7538] +400 Bad Request[RFC7231, Section 6.5.1] +401 Unauthorized[RFC7235, Section 3.1] +402 Payment Required[RFC7231, Section 6.5.2] +403 Forbidden[RFC7231, Section 6.5.3] +404 Not Found[RFC7231, Section 6.5.4] +405 Method Not Allowed[RFC7231, Section 6.5.5] +406 Not Acceptable[RFC7231, Section 6.5.6] +407 Proxy Authentication Required[RFC7235, Section 3.2] +408 Request Timeout[RFC7231, Section 6.5.7] +409 Conflict[RFC7231, Section 6.5.8] +410 Gone[RFC7231, Section 6.5.9] +411 Length Required[RFC7231, Section 6.5.10] +412 Precondition Failed[RFC7232, Section 4.2][RFC8144, Section 3.2] +413 Payload Too Large[RFC7231, Section 6.5.11] +414 URI Too Long[RFC7231, Section 6.5.12] +415 Unsupported Media Type[RFC7231, Section 6.5.13][RFC7694, Section 3] +416 Range Not Satisfiable[RFC7233, Section 4.4] +417 Expectation Failed[RFC7231, Section 6.5.14] +421 Misdirected Request[RFC7540, Section 9.1.2] +422 Unprocessable Entity[RFC4918] +423 Locked[RFC4918] +424 Failed Dependency[RFC4918] +425 Too Early[RFC8470] +426 Upgrade Required[RFC7231, Section 6.5.15] +427 Unassigned +428 Precondition Required[RFC6585] +429 Too Many Requests[RFC6585] +430 Unassigned +431 Request Header Fields Too Large[RFC6585] +451 Unavailable For Legal Reasons[RFC7725] +500 Internal Server Error[RFC7231, Section 6.6.1] +501 Not Implemented[RFC7231, Section 6.6.2] +502 Bad Gateway[RFC7231, Section 6.6.3] +503 Service Unavailable[RFC7231, Section 6.6.4] +504 Gateway Timeout[RFC7231, Section 6.6.5] +505 HTTP Version Not Supported[RFC7231, Section 6.6.6] +506 Variant Also Negotiates[RFC2295] +507 Insufficient Storage[RFC4918] +508 Loop Detected[RFC5842] +509 Unassigned +510 Not Extended[RFC2774] +511 Network Authentication Required[RFC6585] +*/ + } +}