public Monitor AddMonitor(Monitor monitor) { // •apiKey - required //•monitorFriendlyName - required //•monitorURL - required //•monitorType - required //•monitorSubType - optional (required for port monitoring) //•monitorPort - optional (required for port monitoring) //•monitorKeywordType - optional (required for keyword monitoring) //•monitorKeywordValue - optional (required for keyword monitoring) //•monitorHTTPUsername - optional //•monitorHTTPPasswırd - optional if (string.IsNullOrWhiteSpace(monitor.FriendlyName) || string.IsNullOrWhiteSpace(monitor.Url)) { throw new ApplicationException("Some values are required for monitor creation."); } var sb = new StringBuilder(_baseUri); sb.Append("/newMonitor?"); sb.AppendFormat("apiKey={0}", _apiKey); sb.AppendFormat("&monitorFriendlyName={0}", monitor.FriendlyName); //sb.AppendFormat("&monitorURL={0}", monitor.Url); sb.AppendFormat("&monitorType={0}", (int) monitor.Type); if (monitor.Type == MonitorType.Port) { sb.AppendFormat("&monitorSubType={0}", (int) monitor.Subtype); sb.AppendFormat("&monitorPort={0}", monitor.Port); } if (monitor.Type == MonitorType.Keyword) { sb.AppendFormat("&monitorKeywordType=1"); sb.AppendFormat("&monitorKeywordValue={0}", monitor.KeywordValue); } sb.AppendFormat("&format={0}", _responseFormat); string result = string.Empty; try { var wc = new WebClient(); result = wc.DownloadString(sb.ToString()); } catch (WebException webex) { var ex = new UptimeRobotClientException(webex); ex.ExceptionType = UptimeRobotExceptionType.ServerError; throw ex; } XDocument xDoc = XDocument.Parse(result); // Error handling if(xDoc.Root.Name == "error") { var exception = new UptimeRobotClientException(null); UptimeRobotExceptionType exType; string errorCode = (string) xDoc.Descendants().Select(doc => doc.Attribute("id")).FirstOrDefault(); Enum.TryParse(errorCode, out exType); exception.ExceptionType = exType == 0 ? UptimeRobotExceptionType.ServerError : exType; throw exception; } monitor.Id = (int) xDoc.Descendants().Select(doc => doc.Attribute("id")).FirstOrDefault(); monitor.CurrentStatus = (Status) Enum.Parse(typeof (Status), (string) xDoc.Descendants().Select(doc => doc.Attribute("status")).FirstOrDefault()); return monitor; }
public void UpdateMonitor(Monitor monitor) { //apiKey - required //monitorID - required //monitorFriendlyName -optional //monitorURL -optional //monitorType -optional //monitorSubType -optional (used only for port monitoring) //monitorPort -optional (used onlyfor port monitoring) //monitorKeywordType - optional (used only for keyword monitoring) //monitorKeywordValue - optional (used only for keyword monitoring) //monitorHTTPUsername - optional //monitorHTTPPasswırd - optional if (monitor.Id == 0) { throw new ApplicationException("Some values are required for monitor creation."); } var sb = new StringBuilder(_baseUri); sb.Append("/editMonitor?"); sb.AppendFormat("apiKey={0}", _apiKey); sb.AppendFormat("&monitorID={0}", monitor.Id); if (!string.IsNullOrEmpty(monitor.FriendlyName)) sb.AppendFormat("&monitorFriendlyName={0}", monitor.FriendlyName); if (!string.IsNullOrEmpty(monitor.Url)) sb.AppendFormat("&monitorURL={0}", monitor.Url); sb.AppendFormat("&monitorType={0}", (int) monitor.Type); if (monitor.Type == MonitorType.Port) { sb.AppendFormat("&monitorSubType={0}", (int) monitor.Subtype); sb.AppendFormat("&monitorPort={0}", monitor.Port); } if (monitor.Type == MonitorType.Keyword) { sb.AppendFormat("&monitorKeywordType=1"); sb.AppendFormat("&monitorKeywordValue={0}", monitor.KeywordValue); } sb.AppendFormat("&format={0}", _responseFormat); var wc = new WebClient(); string result = wc.DownloadString(sb.ToString()); XDocument xDoc = XDocument.Parse(result); // Error handling if (xDoc.Root.Name == "error") { var exception = new UptimeRobotClientException(null); UptimeRobotExceptionType exType; string errorCode = (string)xDoc.Descendants().Select(doc => doc.Attribute("id")).FirstOrDefault(); Enum.TryParse(errorCode, out exType); exception.ExceptionType = exType == 0 ? UptimeRobotExceptionType.ServerError : exType; throw exception; } }