Mercurial > servermonitor
view ServerMonitor/Objects/Checks/HttpCheck.cs @ 3:96f0b028176d
File check
author | Brad Greco <brad@bgreco.net> |
---|---|
date | Fri, 11 Jan 2019 22:34:18 -0500 |
parents | 453ecc1ed9ea |
children | 68d7834dc28e |
line wrap: on
line source
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] */ } }