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)