Getting Started
-UptimeSharp is a C#.NET class library that integrates the UptimeRobot API.
-The wrapper consists of 2 parts:
--
-
- Get and modify monitors -
- Get and modify alert contacts -
Install using NuGet
-Install-Package UptimeSharp
-nuget.org/packages/UptimeSharp
-Usage Example
-Get your API Key UptimeRobot (left section under "API Information")
-Include the UptimeSharp namespace and it's associated models:
-using UptimeSharp;
-using UptimeSharp.Models;
-Initialize UptimeClient with:
-UptimeClient _client = new UptimeClient("[YOUR_API_KEY]");
-Do a simple request - e.g. get all your monitors:
-_client.GetMonitors().ForEach(
- item => Console.WriteLine(item.Name + " | " + item.Type)
-);
-Which will output:
-frontendplay | HTTP
-google | Keyword
-localhost | Ping
-...
-
-
-Constructor
-UptimeClient(string apiKey)
-Get your API Key UptimeRobot (left section under "API Information")
- -Monitor Types
--
-
- >HTTP -
- Keyword -
- Ping -
- Port -
HTTP Monitoring
-Simple HTTP monitor which requests the webpage every 5 minutes and checks for HTTP Status 200 OK.
-Keyword Monitoring
-The keyword monitor is sniffing the page content if a specified keyword exists/not exists.
-The keyword is submitted via the keywordValue parameter. The keywordType parameter specifies if the value should exist or not exist.
-Ping Monitoring
-This type lets you monitor a server by pinging it.
-Port Monitoring
-If you want to monitor a port, you need to specify a subType which is a common port a custom one:
--
-
- HTTP :80 -
- HTTPS :443 -
- FTP :21 -
- SMTP :25 -
- POP3 :110 -
- IMAP :143 -
- Custom Port (use the port parameter, if this option is selected) -
Release History
--
-
- 2013-08-28 v0.2.0 Request Validation -
- 2013-08-26 v0.1.1 Adding a Port monitor works now -
- 2013-08-25 v0.1.0 Monitor and Alert APIs -
Dependencies
- -Contributors
-
-
- Tobias Klika @ceee
-
License
- - -Retrieve
-Get list of all monitors:
-List<Monitor> items = _client.GetMonitors();
-Get monitors by ID - or a single monitor:
-List<Monitor> items = _client.GetMonitors(new int[]{ 12891, 98711 });
-// or
-Monitor item = _client.GetMonitor(12891);
-Provide additional params for more data:
-List<Monitor> items = _client.GetMonitors(
- monitorIDs: new int[]{ 12891, 98711 },
- customUptimeRatio: new float[] { 7, 30, 45 },
- showLog: true,
- showAlerts: true
-);
-monitorIDs: You can remove this parameter if you want to retrieve all monitors (default: null)
-
-customUptimeRatio: the number of days to calculate the uptime ratio(s) for (default: null)
-
-showLog: include log, if true (default: false)
-
-showAlerts: include alerts, if true (default: true)
-
Add
-Adds/creates a new monitor.
-bool AddMonitor(
- string name,
- string uri,
- Type type = Type.HTTP,
- Subtype subtype = Subtype.Unknown,
- int? port = null,
- string keywordValue = null,
- KeywordType keywordType = KeywordType.Unknown,
- int[] alerts = null,
- string HTTPUsername = null,
- string HTTPPassword = null
-)
-Example - Watch an SMTP Server:
-bool isSuccess = _client.AddMonitor(
- name: "cee",
- uri: "127.0.0.1",
- type: Type.Port,
- subtype: Subtype.SMTP
-);
-name: A friendly name for the new monitor
-
-uri: The URI or IP to watch
-
-type: The type of the monitor
-
-subtype: The subtype of the monitor (only for Type.Port)
-
-port: The port (only for Subtype.Custom)
-
-keywordValue: The keyword value (for Type.Keyword)
-
-keywordType: Type of the keyword (for Type.Keyword)
-
-alerts: An ID list of existing alerts to notify
-
-HTTPUsername: The HTTP username
-
-HTTPPassword: The HTTP password
As you can see, a lot of these parameters are only available if you've specified the correct Type.
-
-If you've selected Type.Port for example, UptimeSharp will ignore the keywordValue and keywordType parameters, even if you submitted valid ones.
Modify
-In order to modify an existing monitor, just alter the properties of the Monitor instance and call the ModifyMonitor method:
// Monitor myMonitor = ...
-myMonitor.Name = "my new name :-)";
-bool isSuccess = _client.ModifyMonitor(myMonitor);
-Important: It is not possible to alter the Type of a monitor after its creation! In case you want to do this, you have to delete the monitor and create a new one with the changed type.
Modify Alerts
-Retrieve all alerts:
-List<Alert> items = _client.GetAlerts();
-Retrieve alerts by IDs:
-List<Alert> items = _client.GetAlerts(new string[]{ "12897", "98711" });
-Retrieve a specific alert:
-Alert item = _client.GetAlert("12897");
-Adds an alert (Due to UptimeRobot API limitations SMS and Twitter alert contact types are not supported yet):
-bool isSuccess = _client.AddAlert(AlertType.Email, "uptimesharp@outlook.com");
-Adds an alert from instance:
-// Alert myAlert = ...
-bool isSuccess = _client.AddAlert(myAlert);
-Deletes an alert:
-bool isSuccess = _client.DeleteAlert("12897");
-Deletes an alert from instance:
-// Alert myAlert = ...
-bool isSuccess = _client.DeleteAlert(myAlert);
-
- Delete
-Delete a monitor by ID:
-bool isSuccess = _client.DeleteMonitor("12891");
-Delete a monitor by a Monitor instance:
-// Monitor myMonitor = ...
-bool isSuccess = _client.DeleteMonitor(myMonitor);
-