Donné l’exemple écrit sur C # contient les modèles suivants:

Exemple C#

en utilisant le système;
en utilisant System.Linq;
en utilisant System.Collections.Generic;
en utilisant System.IO;
en utilisant System.Net;
en utilisant System.Text;
en utilisant System.Web.Script.Serialization;
exemple d’espace de nom
{
programme de classe
{
classe OperatioResult
{
public bool Succès { get; set; }
public string Result { get; set; }
chaîne de remplacement public ToString ()
{
retour String.Format («Succès: {0} ; Résultat: {1} «, Succès, Résultat);
}
}
classe ErrorResult
{
public bool Succès { get; set; }
chaîne publique[] ErrorDescription { get; set; }
chaîne de remplacement public ToString ()
{
retour String.Join (Environment.NewLine, ErrorDescription);
}
}
plate-forme de classe
{
public int Id { get; set; }
chaîne publique Nom { get; set; }
bool public disponible { get; set; }
chaîne de remplacement public ToString ()
{
retour String.Format («Id: {0} ; Nom: {1} ; Disponible: {2} «, Id, Nom, Disponible);
}
}
moniteur de classe
{
public int Id { get; set; }
chaîne publique Nom { get; set; }
bool public disponible { get; set; }
bool public IsDeleted { get; set; }
bool public IsPrivate { get; set; }
chaîne de remplacement public ToString ()
{
retour String.Format («Id: {0} ; Nom: {1} ; Disponible: {2} ; IsDeleted: {3} ; IsPrivate: {4} «,
Id, Nom, Disponible, IsDeleted, IsPrivate);
}
}
classe WeeklyInterval
{
chaîne publique[] Jours { get; set; }
public int From_Min { get; set; }
public int To_Min { get; set; }
bool public inclus { get; set; }
chaîne de remplacement public ToString ()
{
retour String.Format («Jours: [{0}]; From_Min: {1} (Heure: {4}); To_Min: {2} (Heure: {5}); inclus: {3}”,
String.Join(«, «, Days), From_Min, To_Min, Included, TimeSpan.FromMinutes(From_Min), TimeSpan.FromMinutes (To_Min));
}
}
classe DateTimeInterval
{
public longtemps De { get; set; }
public long Pour { obtenir; ensemble; }
chaîne de remplacement public ToString ()
{
retour String.Format («De: {0} (Temps: {2} ); À: {1} (Temps: {3} )»,
De, à, UnixBaseTime.AddMilliseconds (De), UnixBaseTime.AddMilliseconds (To));
}
}
classe AssignedToInfo
{
résumé
lire uniquement
/résumé
int public[] Dispositifs { get; set; }
résumé
lire uniquement
/résumé
public int[] Notification_Groups { get; set; }
chaîne de remplacement public ToString ()
{
retour String.Format(«Devices: [ {0} ]; Notification_Groups: {1} []»,
String.Join(«, «, Devices.Select(id = > id.ToString()). ToArray()),
String.Join(«, «, Notification_Groups.Select (id = > id.ToString()). ToArray());
}
}
scheduler de classe
{
public int Id { get; set; }
chaîne publique Nom { get; set; }
chaîne publique Description { get; set; }
public WeeklyInterval[] Weekly_Intervals { get; set; }
public DateTimeInterval[] Date_Time_Intervals { get; set; }
public AssignedToInfo Assigned_To { get; set; }
chaîne de remplacement public ToString ()
{
retour String.Format («Id: {0}; nom: {1}; description: {2}; Weekly_Intervals: [{3}]; Date_Time_Intervals: [{4}]; AssignedToInfo: {5}”,
Id, Nom, Description,
String.Join(«, «, Weekly_Intervals.Select(wi = > wi. ToString()). ToArray()),
String.Join(«, «, Date_Time_Intervals.Select(dti = > dti. ToString()). ToArray ()), Assigned_To);
}
}
classe SiteNotifyGroup
{
public int Id { get; set; }
public int Time_Shift_Min { get; set; }
}
notifications de classe
{
bool public E_Mail_Flag { get; set; }
chaîne publique E_Mail_Address { get; set; }
public int E_Mail_TimeInterval_Min { get; set; }
bool public WL_Device_Flag { get; set; }
chaîne publique WL_Device_Email_Address { get; set; }
public int WL_Device_TimeInterval_Min { get; set; }
bool public Phone_Flag { get; set; }
chaîne publique Phone_Area_Code { get; set; }
chaîne publique Phone_Phone { get; set; }
public int Phone_TimeInterval_Min { get; set; }
bool public SMS_Flag { get; set; }
chaîne publique SMS_Phone { get; set; }
public int SMS_TimeInterval_Min { get; set; }
bool public Script_Flag { get; set; }
chaîne publique Script_Batch_File_Name { get; set; }
public int Script_TimeInterval_Min { get; set; }
public int SNMP_TimeInterval_Min { get; set; }
site publicNotifyGroup[] Notification_Groups { get; set; }
}
classe ServerViewDevice
{
public int Id { get; set; }
public int Platform_Id { get; set; }
chaîne publique Nom { get; set; }
public int Number_Of_Tasks { get; set; }
chaîne publique Status_Description { get; set; }
bool public Reporter { get; set; }
bool public Send_Uptime_Alert { get; set; }
public int Owner_Device_Id { get; set; }
int fréquence publique { get; set; }
public int Filter_Id { get; set; }
public int Scheduler_Id { get; set; }
notifications publiques { obtenir; définir; }
bool public Avoid_Simultaneous_Checks { get; set; }
bool public False_Positive_Check { get; set; }
public int Alert_Silence_Min { get; set; }
int public[] Lieux { get; set; }
}
classe TaskType
{
public int Id { get; set; }
chaîne publique Nom { get; set; }
}
nom de classeValuePair
{
chaîne publique Nom { get; set; }
chaîne publique Valeur { get; set; }
}
classe HTTPTask
{
public int Device_Id { get; set; }
public int Id { get; set; }
public int Task_Type_Id { get; set; }
chaîne publique Nom { get; set; }
public int Timeout { get; set; }
chaîne publique RequestType { get; set; }
url de chaîne publique { get; set; }
chaîne publique Keyword1 { get; set; }
chaîne publique Keyword2 { get; set; }
chaîne publique Keyword3 { get; set; }
chaîne publique UserName { get; set; }
chaîne publique UserPass { get; set; }
bool public FullPageDownload { get; set; }
bool public Download_Html { get; set; }
bool public Download_Frames { get; set; }
bool public Download_StyleSheets { get; set; }
bool public Download_Scripts { get; set; }
bool public Download_Images { get; set; }
bool public Download_Objects { get; set; }
bool public Download_Applets { get; set; }
bool public Download_Additional { get; set; }
nom publicValuePair[] GetParams { get; set; }
nom publicValuePair[] PostParams { get; set; }
nom publicValuePair[] HeaderParams { get; set; }
chaîne PrepareScript { get; set; }
}
enum RequestMethod
{
Avoir
Publier
}
conteneur cookiecontainer statique privé;
public statique readonly DateTime UnixBaseTime = nouveau DateTime (1970, 1, 1, 0, 0, 0, 0);
mise en place de la fonction de demande
demande de chaîne statique privée (action de chaîne, requestMethod requestType, données de chaîne)
{
Demande webrequest = WebRequest.Create («https://api.dotcom-monitor.com/config_api_v1/» + action);
demander. Méthode = requestType.ToString();
((HttpWebRequest) demande). CookieContainer = conteneur;
si (requestType == RequestMethod.POST)
{
chaîne postData = données;
si (postData.Length > 0)
{
byte[] byteArray = Encoding.UTF8.GetBytes (postData);
demander. ContentType = «application/json»;
demander. ContentLength = byteArray.Length;
Flux de donnéesStream = demande. GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
}
autre
{
demander. ContentLength = 0;
}
}
essayer
{
utilisation (réponse var = demande. GetResponse ())
{
utilisation (var stream = réponse. GetResponseStream())
{
si (flux != nul)
{
utilisation (var reader = nouveau StreamReader(stream))
{
lecteur de retour. LireToEnd();
}
}
}
}
}
capture (Exception ex)
{
utilisation (var stream = ex. Response.GetResponseStream())
{
utilisation (var reader = nouveau StreamReader(stream))
{
lancer nouvelle exception (lecteur. LireToEnd());
}
}
}
retour String.Empty;
}

vide statique Main()
{
ignorer les erreurs de certificat
ServicePointManager.ServerCertificateValidationCallback = délégué { retour vrai; };
initialiser le conteneur à biscuits
conteneur = nouveau CookieContainer ();
initialiser le sérialisateur javascript
sérialisateur var = nouveau JavaScriptSerializer();
connectez-vous
Console.WriteLine («==Login==»);
résultat de la chaîneStr;
essayer
{
resultStr = Demande («login», RequestMethod.POST,
sérialisateur. Sérialiser (
nouveau {
Nom d’utilisateur = «1»,
Mot de passe = «1»
}
));
var résultat = sérialisateur. Deserialize < OperatioResult > (resultStr);
Console.WriteLine (résultat. ToString());
}
capture (Exception ex)
{
var err = sérialisateur. Deserialize < ErrorResult > (ex. Message);
Console.WriteLine (erreur. ToString());
}
obtenir des plates-formes
Console.WriteLine («==Get platforms==»);
Plates-formes iEnumerable < > = nul;
essayer
{
resultStr = Request («platforms», RequestMethod.GET, String.Empty);
plates-formes = sérialisateur. Deserialize < Platform[] > (resultStr);
}
catch (Exception ex)
{
var err = sérialisateur. Deserialize < ErrorResult > (ex. Message);
Console.WriteLine (erreur. ToString());
}
foreach (plate-forme var dans les plates-formes)
{
Console.WriteLine (plate-forme);
}
obtenir des appareils par plate-forme
Console.WriteLine («==Obtenir des appareils par plate-forme==»);
int svDeviceId = 0;
foreach (plate-forme var dans les plates-formes. Où (p = > p.Available))
{
resultStr = Request (String.Format(«devices/ {0} «, plate-forme. Nom), RequestMethod.GET, String.Empty);
var ds = sérialisateur. Deserialize < int[] > (resultStr);
foreach (var id en ds)
{
if (svDeviceId == 0 platform. Id == 1)
{
svDeviceId = id;
}
Console.WriteLine (» {0} – {1} «, plate-forme. Nom, id);
}
}
obtenir l’appareil ServerView par id
Console.WriteLine («==Obtenir l’appareil par id==»);
resultStr = Request (String.Format(«device/ {0} «, svDeviceId), RequestMethod.GET, String.Empty);
dispositif var = sérialisateur. Deserialize < ServerViewDevice > (resultStr);
modifier l’appareil
Console.WriteLine («==Modifier l’appareil==»);
appareil. Nom = dispositif. Nom + ” (édité)»;
essayer
{
resultStr = Request (String.Format(«device/ {0} «, device. Id), RequestMethod.POST,
sérialisateur. Sérialiser (appareil));
var résultat = sérialisateur. Deserialize < OperatioResult > (resultStr);
Console.WriteLine (résultat. ToString());
}
capture (Exception ex)
{
var err = sérialisateur. Deserialize < ErrorResult > (ex. Message);
Console.WriteLine (erreur. ToString());
}
obtenir des moniteurs
Console.WriteLine («==Obtenez monitors==»);
Moniteurs IEnumerable < > Monitor = sérialisateur. Deserialize < Monitor[] > (Demande (String.Format («emplacements/ {0} «, dispositif. Platform_Id),
RequestMethod.GET, String.Empty));
foreach (moniteur var dans les moniteurs)
{
Console.WriteLine (moniteur);
}
obtenir des fréquences
Console.WriteLine («==Obtenir des fréquences==»);
fréquences var = sérialisateur. Deserialize < int[] > (Demande (String.Format («fréquences/ {0} «, dispositif. Platform_Id),
RequestMethod.GET, String.Empty));
foreach (fréquence var dans les fréquences)
{
Console.WriteLine (fréquence);
}
obtenir des groupes de notification
Console.WriteLine («==Obtenir des groupes de notification==»);
var ngs = sérialisateur. Deserialize < int[] > (Request («groups», RequestMethod.GET, String.Empty));
foreach (var ng in ngs)
{
Console.WriteLine(ng);
}
créer un nouvel appareil
Console.WriteLine («==Créer l’appareil==»);
appareil = nouveau ServerViewDevice
{
Platform_Id = plates-formes. Single (p = > p.Name.ToLower() == «serverview»). id
Nom = «nouvel appareil»,
Fréquence = fréquences[0],
Reporter = vrai,
Emplacements = moniteurs. Où (m = > m.Available !m.IsPrivate (m.Id%2 == 0)). Sélectionnez (m = > m.Id). ToArray(),
Avoid_Simultaneous_Checks = vrai,
Notifications = nouvelles notifications
{
E_Mail_Flag = faux,
Pager_Flag = faux,
Phone_Flag = faux,
SMS_Flag = faux,
Script_Flag = faux,
WL_Device_Flag = faux,
Notification_Groups = ngs. Prendre (1). Sélectionnez (ng = > nouveau SiteNotifyGroup {Id = ng, Time_Shift_Min = 0 /*0 = Immediate*/}). ToArray ()
}
};
int newDeviceId = 0;
essayer
{
resultStr = Request («devices?verb=PUT», RequestMethod.POST,
sérialisateur. Sérialiser (appareil));
var résultat = sérialisateur. Deserialize < OperatioResult > (resultStr);
newDeviceId = int. Parse (résultat. Résultat);
Console.WriteLine (résultat. ToString());
}
capture (Exception ex)
{
var err = sérialisateur. Deserialize < ErrorResult > (ex. Message);
Console.WriteLine (erreur. ToString());
}
ajouter une nouvelle tâche HTTP
Console.WriteLine («==Créer http task==»);
resultStr = Demande («tasktypes/» + device. Platform_Id, RequestMethod.GET, String.Empty);
var tts = sérialisateur. Deserialize < TaskType[] > (resultStr);
var httpTT = tts. Simple (tt = > tt. Name.ToLower() == «http»);
var tâche = nouveau HTTPTask
{
Device_Id = newDeviceId,
Task_Type_Id = httpTT.Id,
Nom = «Nouvelle tâche HTTP»,
Délai d’attente = 100500,
RequestType = «GET»,
Url = «amazon.de»
};
essayer
{
resultStr = Request («tasks?verb=PUT», RequestMethod.POST,
sérialisateur. Sérialiser (tâche));
var résultat = sérialisateur. Deserialize < OperatioResult > (resultStr);
Console.WriteLine (résultat. ToString());
}
capture (Exception ex)
{
var err = sérialisateur. Deserialize < ErrorResult > (ex. Message);
Console.WriteLine (erreur. ToString());
}

obtenir des horaires
Console.WriteLine («==Get schedulers==»);
var ss = sérialisateur. Deserialize < int[] > (Request («schedulers», RequestMethod.GET, String.Empty));
avant-centre (var s en ss)
{
Console.WriteLine (sérialisateur. Deserialize < Scheduler > (Request («scheduler/» + s, RequestMethod.GET, String.Empty));
}
créer de nouveaux horaires
Console.WriteLine («==Créer de nouveaux schedulers==»);
var scheduler = nouveau Scheduler
{
Nom = «Nouveau»,
Description = «descr»,
Date_Time_Intervals = nouveau[] {
nouveau DateTimeInterval
{
De = (long) (nouveau DateTime(2013, 2, 2, 2, 0, 0, 0) – UnixBaseTime). TotalMillisecondes,
À = (long) (nouveau DateTime(2013, 2, 2, 2, 30, 0, 0) – UnixBaseTime). TotalMillisecondes,
}
},
Weekly_Intervals = nouveau[] {
nouveau WeeklyInterval
{
Jours = nouveau[] {“mo», «tu», «sa”},
From_Min = (int) nouveau TimeSpan(7, 0, 0). TotalMinutes,
To_Min = (int) nouveau TimeSpan (13, 0, 0). TotalMinutes,
Inclus = faux
}
}
};
essayer
{
resultStr = Request («schedulers?verb=PUT», RequestMethod.POST,
sérialisateur. Sérialisation (scheduler));
var résultat = sérialisateur. Deserialize < OperatioResult > (resultStr);
Console.WriteLine (résultat. ToString());
}
capture (Exception ex)
{
var err = sérialisateur. Deserialize < ErrorResult > (ex. Message);
Console.WriteLine (erreur. ToString());
}
Console.ReadKey();
}
}
}