Das Beispiel für das auf “C” geschriebene Beispiel enthält die folgenden Muster:
- einloggen
- Plattform-Eintrag
- Geräteliste nach Plattform
- ServerView (SV) Gerät nach ID
- Bearbeiten des Geräts
- Abrufen von Monitoren
- Get Frequencies
- Abrufen von Benachrichtigungsgruppen
- Neues SV-Gerät erstellen
- Hinzufügen einer neuen HTTP-Aufgabe
- Zeitplanliste
- Erstellen eines neuen Zeitplans
Beispiel für C-Code
Verwendung von System;
mit System.Linq;
Verwendung von System.Collections.Generic;
Verwendung von System.IO;
Verwendung von System.Net;
Verwendung von System.Text;
Verwendung von System.Web.Script.Serialization;
Namespacebeispiel
{
Klassenprogramm
{
Klasse OperatioResult
{
public bool Erfolg – get; set;
öffentliche Zeichenfolge Ergebnis – get; set;
öffentliche Außerkraftsetzungszeichenfolge ToString()
{
String.Format zurückgeben(“Erfolg: {0} ; Ergebnis: {1} “, Erfolg, Ergebnis);
}
}
Klasse ErrorResult
{
public bool Erfolg – get; set;
public string[] ErrorDescription – get; set;
öffentliche Außerkraftsetzungszeichenfolge ToString()
{
String.Join(Environment.NewLine, ErrorDescription) zurückgeben;
}
}
Klasse Plattform
{
public int ID – get; set;
öffentlicher Zeichenfolgename – get; set;
public bool Verfügbar – get; set;
öffentliche Außerkraftsetzungszeichenfolge ToString()
{
String.Format(“Id: {0} ; Name: {1} ; Verfügbar: {2} “, ID, Name, Verfügbar);
}
}
Klasse Monitor
{
public int ID – get; set;
öffentlicher Zeichenfolgename – get; set;
public bool Verfügbar – get; set;
public bool IsDeleted – get; set;
public bool IsPrivate – get; set;
öffentliche Außerkraftsetzungszeichenfolge ToString()
{
String.Format(“Id: {0} ; Name: {1} ; Verfügbar: {2} ; IsDeleted: {3} ; IsPrivate: {4} “,
Id, Name, Available, IsDeleted, IsPrivate);
}
}
Klasse WeeklyInterval
{
öffentliche Zeichenfolge[] Tage – get; set;
public int From_Min get; set;
public int To_Min – get; set;
public bool Included – get; set;
öffentliche Außerkraftsetzungszeichenfolge ToString()
{
String.Format(“Tage: [{0}]; From_Min: {1} (Zeit: {4}); To_Min: {2} (Zeit: {5}); iinklusive: {3}”,
String.Join(“, ” Days”), From_Min, To_Min, Included, TimeSpan.FromMinutes(From_Min), TimeSpan.FromMinutes(To_Min));
}
}
Klasse DateTimeInterval
{
öffentlich lang Von – get; set;
öffentlich lang To – get; set;
öffentliche Außerkraftsetzungszeichenfolge ToString()
{
String.Format(“Von: {0} (Zeit: {2} ); An: {1} (Zeit: {3} )”,
Von, Zu, UnixBaseTime.AddMilliseconds(From), UnixBaseTime.AddMilliseconds(To));
}
}
Klasse AssignedToInfo
{
Zusammenfassung
nur lesen
/Zusammenfassung
public int[] Geräte – get; set;
Zusammenfassung
nur lesen
/Zusammenfassung
public int[] Notification_Groups – get; set;
öffentliche Außerkraftsetzungszeichenfolge ToString()
{
String.Format(“Devices: [ {0} ]; Notification_Groups: [ {1} ]”,
String.Join(“, “, Devices.Select(id = > id. ToString()). ToArray()),
String.Join(“, “, Notification_Groups.Select(id = > id. ToString()). ToArray()));
}
}
Klasse Scheduler
{
public int ID – get; set;
öffentlicher Zeichenfolgename – get; set;
öffentliche Zeichenfolge Beschreibung – get; set;
öffentliches WeeklyInterval[] Weekly_Intervals – get; set;
öffentliche dateTimeInterval[] Date_Time_Intervals – get; set;
public AssignedToInfo Assigned_To – get; set;
öffentliche Außerkraftsetzungszeichenfolge ToString()
{
String.Format zurücksenden(“Id: {0}; Namen: {1}; Beschreibung: {2}; Weekly_Intervals: [{3}]; Date_Time_Intervals: [{4}]; AssignedToInfo: {5}”,
ID, Name, Beschreibung,
String.Join(“, “, Weekly_Intervals.Select(wi = > wi. ToString()). ToArray()),
String.Join(“, “, Date_Time_Intervals.Select(dti = > dti. ToString()). ToArray()), Assigned_To);
}
}
Klasse SiteNotifyGroup
{
public int ID – get; set;
public int Time_Shift_Min – get; set;
}
Klassenbenachrichtigungen
{
öffentliche bool E_Mail_Flag get; set;
öffentliche Zeichenfolge E_Mail_Address – get; set;
public int E_Mail_TimeInterval_Min – get; set;
öffentliche bool WL_Device_Flag get; set;
öffentliche Zeichenfolge WL_Device_Email_Address get; set;
public int WL_Device_TimeInterval_Min get; set;
public bool Phone_Flag get; set;
öffentliche Zeichenfolge Phone_Area_Code get; set;
öffentliche Zeichenfolge Phone_Phone get; set;
public int Phone_TimeInterval_Min get; set;
öffentliche bool SMS_Flag get; set;
öffentliche Zeichenfolge SMS_Phone – get; set;
public int SMS_TimeInterval_Min get; set;
public bool Script_Flag – get; set;
öffentliche Zeichenfolge Script_Batch_File_Name – get; set;
public int Script_TimeInterval_Min – get; set;
public int SNMP_TimeInterval_Min get; set;
public SiteNotifyGroup[] Notification_Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
}
Klasse ServerViewDevice
{
public int ID – get; set;
public int Platform_Id – get; set;
öffentlicher Zeichenfolgename – get; set;
public int Number_Of_Tasks – get; set;
öffentliche Zeichenfolge Status_Description get; set;
public bool Postpone – get; set;
öffentliche bool Send_Uptime_Alert get; set;
public int Owner_Device_Id – get; set;
öffentliche int-Frequenz – get; set;
public int Filter_Id – get; set;
public int Scheduler_Id – get; set;
Öffentliche Benachrichtigungen Benachrichtigungen – get; set;
öffentliche bool Avoid_Simultaneous_Checks – get; set;
öffentliche bool False_Positive_Check – get; set;
public int Alert_Silence_Min – get; set;
public int[] Locations – get; set;
}
Klasse TaskType
{
public int ID – get; set;
öffentlicher Zeichenfolgename – get; set;
}
Klasse NameValuePair
{
öffentlicher Zeichenfolgename – get; set;
öffentliche Zeichenfolge Wert – get; set;
}
Klasse HTTPTask
{
public int Device_Id – get; set;
public int ID – get; set;
public int Task_Type_Id – get; set;
öffentlicher Zeichenfolgename – get; set;
public int Timeout – get; set;
öffentliche Zeichenfolge RequestType – get; set;
öffentliche Zeichenfolge Url – get; set;
öffentliche Zeichenfolge Keyword1 – get; set;
öffentliche Zeichenfolge Keyword2 – get; set;
öffentliche Zeichenfolge Keyword3 – get; set;
öffentliche Zeichenfolge UserName – get; set;
öffentliche Zeichenfolge UserPass – get; set;
public bool FullPageDownload – get; set;
public bool Download_Html – get; set;
public bool Download_Frames get; set;
public bool Download_StyleSheets – get; set;
public bool Download_Scripts get; set;
öffentliche bool Download_Images get; set;
öffentliche bool Download_Objects get; set;
public bool Download_Applets – get; set;
public bool Download_Additional get; set;
public NameValuePair[] GetParams – get; set;
public NameValuePair[] PostParams – get; set;
public NameValuePair[] HeaderParams – get; set;
string PrepareScript – get; set;
}
enum RequestMethod
{
Erhalten
Bereitstellen
}
privater statischer CookieContainer-Container;
öffentlich statisch schreibgeschützt DateTime UnixBaseTime = neue DateTime(1970, 1, 1, 0, 0, 0, 0);
Einrichten der Anforderungsfunktion
Private statische Zeichenfolge Request(string action, RequestMethod RequestType, string data)
{
WebRequest-Anforderung = WebRequest.Create(“https://api.dotcom-monitor.com/config_api_v1/” + Aktion);
Anfrage. Methode = requestType.ToString();
((HttpWebRequest)-Anforderung). CookieContainer = Container;
if (requestType == RequestMethod.POST)
{
string postData = Daten;
if (postData.Length > 0)
{
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
Anfrage. ContentType = “application/json”;
Anfrage. ContentLength = byteArray.Length;
Stream dataStream = Anforderung. GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
}
oder
{
Anfrage. ContentLength = 0;
}
}
Versuchen
{
verwendung (var-Antwort = Anforderung. GetResponse())
{
verwendung (var stream = response. GetResponseStream())
{
if (Stream != null)
{
Verwendung (var reader = neuer StreamReader(Stream))
{
Rückleser. ReadToend();
}
}
}
}
}
catch (Ausnahme ex)
{
verwendung (var stream = ex. Response.GetResponseStream())
{
Verwendung (var reader = neuer StreamReader(Stream))
{
neue Exception(Reader. ReadToend());
}
}
}
String.Empty zurückgeben;
}
statische leere Main()
{
Ignorieren von Zertifikatsfehlern
ServicePointManager.ServerCertificateValidationCallback = Delegat , rückgabe true;
Initialisieren des Cookie-Containers
container = neuer CookieContainer();
Javascript Serializer initialisieren
var serializer = neuer JavaScriptSerializer();
einloggen
Console.Writeline(“== Login==”);
ZeichenfolgenergebnisStr;
Versuchen
{
resultStr = Request(“login”, RequestMethod.POST,
Serialisierungsprogramm. Serialisieren(
neu
UserName = “1”,
Passwort = “1”
}
));
var result = serializer. Deserialisieren < OperatioResult > (resultStr);
Console.WriteLine(Ergebnis. ToString());
}
catch (Ausnahme ex)
{
var err = Serializer. Deserialisieren < Von ErrorResult > (z. B. Nachricht);
Console.WriteLine(err. ToString());
}
Plattformen erhalten
Console.WriteLine(“== Plattformen abrufen==”);
IEnumerable < > Platform-Plattformen = null;
Versuchen
{
resultStr = Request(“platforms”, RequestMethod.GET, String.Empty);
Plattformen = Serialisierung. Deserialisieren < Plattform[] > (resultStr);
}
catch(Ausnahme ex)
{
var err = Serializer. Deserialisieren < Von ErrorResult > (z. B. Nachricht);
Console.WriteLine(err. ToString());
}
Foreach (var-Plattform in Plattformen)
{
Console.WriteLine(Plattform);
}
Abrufen von Geräten nach Plattform
Console.WriteLine(“==Get devices by platform==”);
int svDeviceId = 0;
foreach (var Plattform in Plattformen. Wo(p = > p.Verfügbar))
{
resultStr = Request(String.Format(“devices/ {0} “, Plattform. Name), RequestMethod.GET, String.Empty);
var ds = Serialisierung. Deserialisieren < int[] > (resultStr);
foreach (var id in ds)
{
if (svDeviceId == 0 && plattform. Id == 1)
{
svDeviceId = id;
}
Console.WriteLine(” {0} – {1} “, Plattform. Name, id);
}
}
Abrufen von ServerView-Gerät nach ID
Console.WriteLine(“==Get device by id==”);
resultStr = Request(String.Format(“device/ {0} “, svDeviceId), RequestMethod.GET, String.Empty);
var Gerät = Serialisierung. Deserialisieren von < ServerViewDevice > (resultStr);
Bearbeitungsgerät
Console.WriteLine(“==Edit device==”);
Gerät. Name = Gerät. Name + ” (bearbeitet)”;
Versuchen
{
resultStr = Request(String.Format(“device/ {0} “, Gerät. Id), RequestMethod.POST,
Serialisierungsprogramm. Serialisieren(Gerät));
var result = serializer. Deserialisieren < OperatioResult > (resultStr);
Console.WriteLine(Ergebnis. ToString());
}
catch (Ausnahme ex)
{
var err = Serializer. Deserialisieren < Von ErrorResult > (z. B. Nachricht);
Console.WriteLine(err. ToString());
}
Monitore abrufen
Console.WriteLine(“==Get monitors==”);
IEnumerable < > Monitore = Serialisierer. Deserialize < Monitor[] > (Request(String.Format(“locations/ {0} “, Gerät. Platform_Id),
RequestMethod.GET, String.Empty));
Foreach (Var-Monitor in Monitoren)
{
Console.WriteLine(Monitor);
}
Erhalten von Frequenzen
Console.WriteLine(“==Frequenzen abrufen==”);
var-Frequenzen = Serialisierung. Deserialize < int[] > (Request(String.Format(“frequencies/ {0} “, Gerät. Platform_Id),
RequestMethod.GET, String.Empty));
Foreach (var Frequenz in Frequenzen)
{
Console.WriteLine(Frequenz);
}
Benachrichtigungsgruppen abrufen
Console.WriteLine(“== Benachrichtigungsgruppen abrufen==”);
var ngs = Serialisierung. Deserialize < int[] > (Request(“groups”, RequestMethod.GET, String.Empty));
Foreach (var ng in ngs)
{
Console.WriteLine(ng);
}
Neues Gerät erstellen
Console.WriteLine(“== Gerät erstellen==”);
Gerät = neues ServerViewDevice
{
Platform_Id = Plattformen. Single(p = > p.Name.ToLower() == “serverview”). Id
Name = “neues Gerät”,
Frequenz = Frequenzen[0],
Aufschieben = wahr,
Standorte = Monitore. Where(m = > m.Verfügbar && !m.IsPrivate && (m.Id%2 == 0)). Select(m = > m.Id). ToArray(),
Avoid_Simultaneous_Checks = wahr,
Benachrichtigungen = neue Benachrichtigungen
{
E_Mail_Flag = falsch,
Pager_Flag = falsch,
Phone_Flag = falsch,
SMS_Flag = falsch,
Script_Flag = falsch,
WL_Device_Flag = falsch,
Notification_Groups = ngs. Take(1). Select(ng = > neue SiteNotifyGroup – ID = ng, Time_Shift_Min = 0 /*0 = Immediate*/). ToArray()
}
};
int newDeviceId = 0;
Versuchen
{
resultStr = Request(“devices?verb=PUT”, RequestMethod.POST,
Serialisierungsprogramm. Serialisieren(Gerät));
var result = serializer. Deserialisieren < OperatioResult > (resultStr);
newDeviceId = int. Parse(Ergebnis. Ergebnis);
Console.WriteLine(Ergebnis. ToString());
}
catch (Ausnahme ex)
{
var err = Serializer. Deserialisieren < Von ErrorResult > (z. B. Nachricht);
Console.WriteLine(err. ToString());
}
Hinzufügen einer neuen HTTP-Aufgabe
Console.WriteLine(“== HTTP-Aufgabe erstellen==”);
resultStr = Request(“tasktypes/” + Gerät. Platform_Id, RequestMethod.GET, String.Empty);
var tts = serializer. Deserialisieren < von TaskType[] > (resultStr);
var httpTT = tts. Single(tt = > tt. Name.ToLower() == “http”);
var-Task = neue HTTPTask
{
Device_Id = newDeviceId,
Task_Type_Id = httpTT.Id,
Name = “Neue HTTP-Aufgabe”,
Timeout = 100500,
RequestType = “GET”,
Url = “amazon.de”
};
Versuchen
{
resultStr = Request(“tasks?verb=PUT”, RequestMethod.POST,
Serialisierungsprogramm. Serialisieren(Aufgabe));
var result = serializer. Deserialisieren < OperatioResult > (resultStr);
Console.WriteLine(Ergebnis. ToString());
}
catch (Ausnahme ex)
{
var err = Serializer. Deserialisieren < Von ErrorResult > (z. B. Nachricht);
Console.WriteLine(err. ToString());
}
Abrufen von Planern
Console.WriteLine(“==Abplaner==”);
var ss = Serialisierung. Deserialize < int[] > (Request(“schedulers”, RequestMethod.GET, String.Empty));
Foreach (var s in ss)
{
Console.WriteLine(serializer. Deserialisieren < Scheduler > (Request(“scheduler/” + s, RequestMethod.GET, String.Empty)));
}
Erstellen neuer Planer
Console.WriteLine(“== Erstellen neuer Planer==”);
var scheduler = neuer Scheduler
{
Name = “Neu”,
Beschreibung = “descr”,
Date_Time_Intervals = neu[]
{
Neues DateTimeInterval
{
Von = (lang) (neue DateTime(2013, 2, 2, 2, 0, 0, 0) – UnixBaseTime). TotalMillisekunden,
An = (lang) (neue DateTime(2013, 2, 2, 2, 30, 0, 0) – UnixBaseTime). TotalMillisekunden,
}
},
Weekly_Intervals = neu[]
{
neues WeeklyInterval
{
Days = new[] ”mo’, ‘tu’, “sa”,
From_Min = (int) neue TimeSpan(7, 0, 0). TotalMinuten,
To_Min = (int) neue TimeSpan(13, 0, 0). TotalMinuten,
Inklusive = false
}
}
};
Versuchen
{
resultStr = Request(“schedulers?verb=PUT”, RequestMethod.POST,
Serialisierungsprogramm. Serialisieren(Scheduler));
var result = serializer. Deserialisieren < OperatioResult > (resultStr);
Console.WriteLine(Ergebnis. ToString());
}
catch (Ausnahme ex)
{
var err = Serializer. Deserialisieren < Von ErrorResult > (z. B. Nachricht);
Console.WriteLine(err. ToString());
}
Console.ReadKey();
}
}
}