From 1534a93b68f6777f41e78f8805c4d7e23b362e32 Mon Sep 17 00:00:00 2001 From: ceee Date: Tue, 20 Aug 2013 23:00:14 +0200 Subject: [PATCH] refactor parameter creation and simplify Alerts --- UptimeSharp/Components/Alert.cs | 33 +++---- UptimeSharp/Components/Monitor.cs | 6 +- .../Models/Parameters/MonitorParameters.cs | 33 +++---- .../Models/Parameters/RetrieveParameters.cs | 22 ++--- .../Models/Response/DefaultResponse.cs | 5 +- UptimeSharp/UptimeClient.cs | 53 ++++++----- UptimeSharp/UptimeSharp.csproj | 1 - UptimeSharp/Utilities.cs | 90 ------------------- 8 files changed, 60 insertions(+), 183 deletions(-) delete mode 100644 UptimeSharp/Utilities.cs diff --git a/UptimeSharp/Components/Alert.cs b/UptimeSharp/Components/Alert.cs index 47cf705..1e09e3c 100644 --- a/UptimeSharp/Components/Alert.cs +++ b/UptimeSharp/Components/Alert.cs @@ -14,9 +14,11 @@ namespace UptimeSharp /// /// Retrieve specified alert contacts by supplying IDs for them. /// - public List RetrieveAlerts(int[] alertIDs = null) + public List RetrieveAlerts(params int[] alertIDs) { - return Get("getAlertContacts").Items; + Parameter alerts = Parameter("alertcontacts", alertIDs.Length > 0 ? string.Join("-", alertIDs) : null); + + return Get("getAlertContacts", alerts).Items; } @@ -29,13 +31,15 @@ namespace UptimeSharp /// public bool AddAlert(AlertType type, string value) { - List parameters = new List() + if (type == AlertType.SMS) { - Utilities.CreateParam("alertContactType", (int)type), - Utilities.CreateParam("alertContactValue", value) - }; + throw new APIException("AlertType.SMS is not supported by the UptimeRobot API"); + } - return Get("newAlertContact", parameters).Status; + return Get("newAlertContact", + Parameter("alertContactType", (int)type), + Parameter("alertContactValue", value) + ).Status; } @@ -47,13 +51,7 @@ namespace UptimeSharp /// public bool AddAlert(Alert alert) { - List parameters = new List() - { - Utilities.CreateParam("alertContactType", (int)alert.Type), - Utilities.CreateParam("alertContactValue", alert.Value) - }; - - return Get("newAlertContact", parameters).Status; + return AddAlert(alert.Type, alert.Value); } @@ -65,12 +63,7 @@ namespace UptimeSharp /// public bool DeleteAlert(int alertID) { - List parameters = new List() - { - Utilities.CreateParam("alertContactID", alertID) - }; - - return Get("deleteAlertContact", parameters).Status; + return Get("deleteAlertContact", Parameter("alertContactID", alertID)).Status; } diff --git a/UptimeSharp/Components/Monitor.cs b/UptimeSharp/Components/Monitor.cs index ee1c486..75fb432 100644 --- a/UptimeSharp/Components/Monitor.cs +++ b/UptimeSharp/Components/Monitor.cs @@ -187,7 +187,7 @@ namespace UptimeSharp public bool Modify(int monitorID, MonitorParameters parameters) { List paramList = parameters.Convert(); - paramList.Add(Utilities.CreateParam("monitorID", monitorID)); + paramList.Add(Parameter("monitorID", monitorID)); return Get("editorMonitor", paramList).Status; } @@ -227,10 +227,10 @@ namespace UptimeSharp // fix bad behaviour in API if no subtype is submitted if(parameters.Subtype == Subtype.Unknown) { - paramList.Add(Utilities.CreateParam("monitorSubType", 0)); + paramList.Add(Parameter("monitorSubType", 0)); } - paramList.Add(Utilities.CreateParam("monitorID", monitor.ID)); + paramList.Add(Parameter("monitorID", monitor.ID)); return Get("editMonitor", paramList).Status; } diff --git a/UptimeSharp/Models/Parameters/MonitorParameters.cs b/UptimeSharp/Models/Parameters/MonitorParameters.cs index 6287929..6a7e766 100644 --- a/UptimeSharp/Models/Parameters/MonitorParameters.cs +++ b/UptimeSharp/Models/Parameters/MonitorParameters.cs @@ -99,53 +99,40 @@ namespace UptimeSharp.Models { List parameters = new List(); - if(!string.IsNullOrEmpty(Name)) - { - parameters.Add(Utilities.CreateParam("monitorFriendlyName", Name)); - } - - if(!string.IsNullOrEmpty(Uri)) - { - parameters.Add(Utilities.CreateParam("monitorURL", Uri)); - } + parameters.Add(UptimeClient.Parameter("monitorFriendlyName", Name)); + parameters.Add(UptimeClient.Parameter("monitorURL", Uri)); if(Type != null && (int)Type != 0) { - parameters.Add(Utilities.CreateParam("monitorType", (int)Type)); + parameters.Add(UptimeClient.Parameter("monitorType", (int)Type)); } // special params for port listener if (Type == Type.Port && Subtype != Subtype.Unknown && Port.HasValue) { - parameters.Add(Utilities.CreateParam("monitorSubType", (int)Subtype)); + parameters.Add(UptimeClient.Parameter("monitorSubType", (int)Subtype)); if (Subtype == Subtype.Custom) { - parameters.Add(Utilities.CreateParam("monitorPort", Port)); + parameters.Add(UptimeClient.Parameter("monitorPort", Port)); } } // keyword listener if (Type == Type.Keyword && !string.IsNullOrEmpty(KeywordValue)) { - parameters.Add(Utilities.CreateParam("monitorKeywordType", (int)KeywordType)); - parameters.Add(Utilities.CreateParam("monitorKeywordValue", KeywordValue)); + parameters.Add(UptimeClient.Parameter("monitorKeywordType", (int)KeywordType)); + parameters.Add(UptimeClient.Parameter("monitorKeywordValue", KeywordValue)); } // HTTP basic auth credentials - if (!string.IsNullOrEmpty(HTTPUsername)) - { - parameters.Add(Utilities.CreateParam("monitorHTTPUsername", HTTPUsername)); - } - if (!string.IsNullOrEmpty(HTTPPassword)) - { - parameters.Add(Utilities.CreateParam("monitorHTTPPassword", HTTPPassword)); - } + parameters.Add(UptimeClient.Parameter("monitorHTTPUsername", HTTPUsername)); + parameters.Add(UptimeClient.Parameter("monitorHTTPPassword", HTTPPassword)); // alert notifications if (Alerts != null && Alerts.Length > 0) { - parameters.Add(Utilities.CreateParam("monitorAlertContacts", string.Join("-", Alerts))); + parameters.Add(UptimeClient.Parameter("monitorAlertContacts", string.Join("-", Alerts))); } return parameters; diff --git a/UptimeSharp/Models/Parameters/RetrieveParameters.cs b/UptimeSharp/Models/Parameters/RetrieveParameters.cs index 2cc7b5f..e29c0a5 100644 --- a/UptimeSharp/Models/Parameters/RetrieveParameters.cs +++ b/UptimeSharp/Models/Parameters/RetrieveParameters.cs @@ -50,24 +50,16 @@ namespace UptimeSharp.Models { List parameters = new List(); - if (Monitors != null) - { - parameters.Add(Utilities.CreateParam("monitors", String.Join("-", Monitors))); - } - if (CustomUptimeRatio != null) - { - parameters.Add(Utilities.CreateParam("customUptimeRatio", String.Join("-", CustomUptimeRatio))); - } + parameters.Add(UptimeClient.Parameter("monitors", String.Join("-", Monitors))); + parameters.Add(UptimeClient.Parameter("customUptimeRatio", String.Join("-", CustomUptimeRatio))); + parameters.Add(UptimeClient.Parameter("showMonitorAlertContacts", (bool)ShowAlerts ? "1" : "0")); + if (ShowLog.HasValue) { string showLog = (bool)ShowLog ? "1" : "0"; - parameters.Add(Utilities.CreateParam("logs", showLog)); - parameters.Add(Utilities.CreateParam("alertContacts", showLog)); - parameters.Add(Utilities.CreateParam("showTimezone", showLog)); - } - if (ShowAlerts.HasValue) - { - parameters.Add(Utilities.CreateParam("showMonitorAlertContacts", (bool)ShowAlerts ? "1" : "0")); + parameters.Add(UptimeClient.Parameter("logs", showLog)); + parameters.Add(UptimeClient.Parameter("alertContacts", showLog)); + parameters.Add(UptimeClient.Parameter("showTimezone", showLog)); } return parameters; diff --git a/UptimeSharp/Models/Response/DefaultResponse.cs b/UptimeSharp/Models/Response/DefaultResponse.cs index 3ade291..9c4d9aa 100644 --- a/UptimeSharp/Models/Response/DefaultResponse.cs +++ b/UptimeSharp/Models/Response/DefaultResponse.cs @@ -7,8 +7,5 @@ namespace UptimeSharp.Models /// Default Response /// [DataContract] - internal class DefaultResponse : ResponseBase - { - - } + internal class DefaultResponse : ResponseBase {} } diff --git a/UptimeSharp/UptimeClient.cs b/UptimeSharp/UptimeClient.cs index 506acaa..1e0323f 100644 --- a/UptimeSharp/UptimeClient.cs +++ b/UptimeSharp/UptimeClient.cs @@ -117,7 +117,12 @@ namespace UptimeSharp if (parameters != null) { parameters.ForEach( - param => request.AddParameter(param) + param => { + if(param.Value != null) + { + request.AddParameter(param); + } + } ); } @@ -126,37 +131,31 @@ namespace UptimeSharp } - protected string Get(string resource, List parameters = null) + /// + /// Fetches a typed resource + /// + /// + /// Requested resource + /// The parameters. + /// + protected T Get(string resource, params Parameter[] parameters) where T : class, new() { - var request = new RestRequest(resource, Method.GET); + List parameterList = new List(); + parameterList.AddRange(parameters); - // enumeration for params - if (parameters != null) - { - parameters.ForEach( - param => request.AddParameter(param) - ); - } - - // do the request - return Request(request); + return Get(resource, parameterList); } - ///// - ///// Puts an action - ///// - ///// The action parameter. - ///// - //protected bool PutSendAction(ActionParameter actionParameter) - //{ - // ModifyParameters parameters = new ModifyParameters() - // { - // Actions = new List() { actionParameter } - // }; - - // return Get("send", parameters.Convert(), true).Status; - //} + public static Parameter Parameter(string name, object value) + { + return new Parameter() + { + Name = name, + Value = value, + Type = ParameterType.GetOrPost + }; + } ///// diff --git a/UptimeSharp/UptimeSharp.csproj b/UptimeSharp/UptimeSharp.csproj index b6dd36d..d07498e 100644 --- a/UptimeSharp/UptimeSharp.csproj +++ b/UptimeSharp/UptimeSharp.csproj @@ -66,7 +66,6 @@ - diff --git a/UptimeSharp/Utilities.cs b/UptimeSharp/Utilities.cs deleted file mode 100644 index 2451d04..0000000 --- a/UptimeSharp/Utilities.cs +++ /dev/null @@ -1,90 +0,0 @@ -using RestSharp; -using System; -using System.Collections.Generic; - -namespace UptimeSharp -{ - /// - /// General utilities - /// - internal class Utilities - { - - /// - /// converts a bool to a string for GET param - /// - /// The value. - /// A string representation of the boolean - public static string Bool(bool? value) - { - return value != null ? ((bool)value ? "1" : "0") : null; - } - - - /// - /// converts DateTime to an UNIX timestamp - /// - /// The date. - /// UNIX timestamp - public static int? GetUnixTimestamp(DateTime? dateTime) - { - if (dateTime == null) - { - return null; - } - - return (int)((DateTime)dateTime - new DateTime(1970, 1, 1)).TotalSeconds; - } - - - /// - /// Creates a Parameter object. - /// - /// The name. - /// The value. - /// The type. - /// - public static Parameter CreateParam(string name, object value, ParameterType type = ParameterType.GetOrPost) - { - return new Parameter() { Name = name, Value = value, Type = type }; - } - - - /// - /// Creates a Parameter object within a list. - /// - /// The name. - /// The value. - /// The type. - /// - public static List CreateParamInList(string name, object value, ParameterType type = ParameterType.GetOrPost) - { - return new List() { CreateParam(name, value, type) }; - } - - - /// - /// Convert a dictionary to a list - /// - /// - /// The items. - /// - public static List DictionaryToList(Dictionary items) where T : new() - { - if (items == null) - { - return null; - } - - var itemEnumerator = items.GetEnumerator(); - List list = new List(); - - while (itemEnumerator.MoveNext()) - { - list.Add(itemEnumerator.Current.Value); - } - - return list; - } - } -}