diff --git a/UptimeSharp/Components/Monitor.cs b/UptimeSharp/Components/Monitor.cs index 9662672..ee1c486 100644 --- a/UptimeSharp/Components/Monitor.cs +++ b/UptimeSharp/Components/Monitor.cs @@ -95,7 +95,7 @@ namespace UptimeSharp /// /// Creates a monitor. /// - /// The monitor. + /// The monitor parameters. /// /// success state /// @@ -174,5 +174,65 @@ namespace UptimeSharp Alerts = alerts }); } + + + /// + /// Edits a monitor. + /// + /// The monitor unique identifier. + /// The monitor parameters. + /// + /// success state + /// + public bool Modify(int monitorID, MonitorParameters parameters) + { + List paramList = parameters.Convert(); + paramList.Add(Utilities.CreateParam("monitorID", monitorID)); + + return Get("editorMonitor", paramList).Status; + } + + + /// + /// Edits a monitor. + /// + /// The monitor. + /// + /// success state + /// + public bool Modify(Monitor monitor) + { + List alerts = null; + + if (monitor.Alerts != null) + { + monitor.Alerts.ForEach(item => alerts.Add((int)item.ID)); + } + + MonitorParameters parameters = new MonitorParameters() + { + Name = monitor.Name, + Uri = monitor.UriString != null ? monitor.UriString : null, + Port = monitor.Port, + HTTPPassword = monitor.HTTPPassword, + HTTPUsername = monitor.HTTPUsername, + KeywordType = monitor.KeywordType, + KeywordValue = monitor.KeywordValue, + Subtype = monitor.Subtype, + Alerts = alerts != null ? alerts.ToArray() : null + }; + + List paramList = parameters.Convert(); + + // fix bad behaviour in API if no subtype is submitted + if(parameters.Subtype == Subtype.Unknown) + { + paramList.Add(Utilities.CreateParam("monitorSubType", 0)); + } + + paramList.Add(Utilities.CreateParam("monitorID", monitor.ID)); + + return Get("editMonitor", paramList).Status; + } } } \ No newline at end of file diff --git a/UptimeSharp/Models/Parameters/MonitorParameters.cs b/UptimeSharp/Models/Parameters/MonitorParameters.cs index 24d604c..6287929 100644 --- a/UptimeSharp/Models/Parameters/MonitorParameters.cs +++ b/UptimeSharp/Models/Parameters/MonitorParameters.cs @@ -97,12 +97,22 @@ namespace UptimeSharp.Models /// Parameter list public List Convert() { - List parameters = new List() + List parameters = new List(); + + if(!string.IsNullOrEmpty(Name)) { - Utilities.CreateParam("monitorFriendlyName", Name), - Utilities.CreateParam("monitorURL", Uri), - Utilities.CreateParam("monitorType", (int)Type) - }; + parameters.Add(Utilities.CreateParam("monitorFriendlyName", Name)); + } + + if(!string.IsNullOrEmpty(Uri)) + { + parameters.Add(Utilities.CreateParam("monitorURL", Uri)); + } + + if(Type != null && (int)Type != 0) + { + parameters.Add(Utilities.CreateParam("monitorType", (int)Type)); + } // special params for port listener if (Type == Type.Port && Subtype != Subtype.Unknown && Port.HasValue)