Dado que el ejemplo escrito en C- contiene los siguientes patrones:

Ejemplo de C-

uso del Sistema;
uso de System.Linq;
uso de System.Collections.Generic;
utilizando System.IO;
utilizando System.Net;
uso de System.Text;
uso de System.Web.Script.Serialization;
ejemplo de espacio de nombres
{
programa de clase
{
clase OperatioResult
{
bool público Correcto – get; set;
cadena pública Resultado – get; set;
public override string ToString()
{
return String.Format(“Success: {0} ; Resultado: {1} “, éxito, resultado);
}
}
clase ErrorResult
{
bool público Correcto – get; set;
cadena pública[] Descripción de error á get; set;
public override string ToString()
{
devolver String.Join(Environment.NewLine, ErrorDescription);
}
}
clase Plataforma
{
public int Id á get; set;
public string Name ? get; set;
bool público Disponible – get; set;
public override string ToString()
{
return String.Format(“Id: {0} ; Nombre: {1} ; Disponible: {2} “, Id, Nombre, Disponible);
}
}
clase Monitor
{
public int Id á get; set;
public string Name ? get; set;
bool público Disponible – get; set;
bool público IsDeleted – get; set;
bool público IsPrivate – get; set;
public override string ToString()
{
return String.Format(“Id: {0} ; Nombre: {1} ; Disponible: {2} ; IsDeleted: {3} ; IsPrivate: {4} “,
Id, Name, Available, IsDeleted, IsPrivate);
}
}
clase WeeklyInterval
{
cadena pública[] Días – get; set;
público int From_Min – get; set;
público int To_Min – get; set;
bool público incluido en get; set;
public override string ToString()
{
return String.Format(“Días: [{0}]; From_Min: {1} (Hora: {4}); To_Min: {2} (Hora: {5}); Incluido: {3}”,
String.Join(“, “, Days), From_Min, To_Min, Included, TimeSpan.FromMinutes(From_Min), TimeSpan.FromMinutes(To_Min));
}
}
clase DateTimeInterval
{
público largo De – get; set;
público largo para obtener; establecer;
public override string ToString()
{
return String.Format(“From: {0} (Time: {2} ); Para: {1} (Hora: {3} )”,
From, To, UnixBaseTime.AddMilliseconds(From), UnixBaseTime.AddMilliseconds(To));
}
}
clase AssignedToInfo
{
Resumen
sólo lectura
/resumen
público int[] Dispositivos – get; set;
Resumen
sólo lectura
/resumen
público int[] Notification_Groups é get; set;
public override string ToString()
{
return String.Format(“Devices: [ {0} ]; Notification_Groups: [ {1} ]”,
String.Join(“, “, Devices.Select(id ? > id. ToString()). ToArray()),
String.Join(“, “, Notification_Groups.Select(id ? > id. ToString()). ToArray()));
}
}
clase Programador
{
public int Id á get; set;
public string Name ? get; set;
cadena pública Descripción de la cadena de público ? get; set;
public WeeklyInterval[] Weekly_Intervals – get; set;
public DateTimeInterval[] Date_Time_Intervals á get; set;
public AssignedToInfo Assigned_To á get; set;
public override string ToString()
{
devolver String.Format(“Id: {0}; Nombre: {1}; Descripción: {2}; Weekly_Intervals: [{3}]; Date_Time_Intervals: [{4}]; AssignedToInfo: {5}”,
Id, Nombre, Descripción,
String.Join(“, “, Weekly_Intervals.Select(wi á > wi. ToString()). ToArray()),
String.Join(“, “, Date_Time_Intervals.Select(dti á > dti. ToString()). ToArray()), Assigned_To);
}
}
clase SiteNotifyGroup
{
public int Id á get; set;
público int Time_Shift_Min – get; set;
}
clase Notificaciones
{
bool público E_Mail_Flag – get; set;
cadena pública E_Mail_Address de la cadena de la cadena de la cadena de la cadena de la cadena de la cadena de la cadena;
público int E_Mail_TimeInterval_Min – get; set;
bool público WL_Device_Flag – get; set;
cadena pública WL_Device_Email_Address de la cadena de la cadena de la cadena de la WL_Device_Email_Address de la cadena de la cadena de la red;
público int WL_Device_TimeInterval_Min – get; set;
bool público Phone_Flag – get; set;
cadena pública Phone_Area_Code á get; set;
cadena pública Phone_Phone de la cadena de la cadena de la cadena de la cadena; set;
público int Phone_TimeInterval_Min – get; set;
bool público SMS_Flag – get; set;
cadena pública SMS_Phone de la cadena de la cadena de la cadena de la cadena de la cadena de la cadena de la cadena de la cadena;
público int SMS_TimeInterval_Min – get; set;
bool público Script_Flag – get; set;
cadena pública Script_Batch_File_Name de la cadena de la cadena de la cadena de la cadena de la cadena de la cadena;
público int Script_TimeInterval_Min – get; set;
público int SNMP_TimeInterval_Min – get; set;
public SiteNotifyGroup[] Notification_Groups – get; set;
}
clase ServerViewDevice
{
public int Id á get; set;
público int Platform_Id – get; set;
public string Name ? get; set;
público int Number_Of_Tasks – get; set;
cadena pública Status_Description de la cadena de la cadena de la Status_Description de la cadena de la cadena de la cadena;
bool público Posponer – get; set;
bool público Send_Uptime_Alert – get; set;
público int Owner_Device_Id – get; set;
frecuencia int pública : get; set;
público int Filter_Id – get; set;
público int Scheduler_Id – get; set;
Notificaciones públicas Notificaciones – get; set;
bool público Avoid_Simultaneous_Checks – get; set;
bool público False_Positive_Check – get; set;
público int Alert_Silence_Min – get; set;
público int[] Ubicaciones : get; set;
}
clase TaskType
{
public int Id á get; set;
public string Name ? get; set;
}
clase NameValuePair
{
public string Name ? get; set;
cadena pública Value á get; set;
}
clase HTTPTask
{
público int Device_Id – get; set;
public int Id á get; set;
público int Task_Type_Id – get; set;
public string Name ? get; set;
tiempo de espera int público – get; set;
cadena pública RequestType á get; set;
cadena pública Url á get; set;
cadena pública Palabra clave1 – get; set;
cadena pública Palabra clave2 – get; set;
cadena pública Palabra clave3 – get; set;
cadena pública UserName á get; set;
cadena pública UserPass – get; set;
bool público FullPageDownload á get; set;
bool público Download_Html – get; set;
bool público Download_Frames – get; set;
bool público Download_StyleSheets – get; set;
bool público Download_Scripts – get; set;
bool público Download_Images – get; set;
bool público Download_Objects – get; set;
bool público Download_Applets – get; set;
bool público Download_Additional – get; set;
public NameValuePair[] GetParams ? get; set;
public NameValuePair[] PostParams ? get; set;
public NameValuePair[] HeaderParams ? get; set;
cadena PrepareScript – get; set;
}
enum RequestMethod
{
Obtener
Exponer
}
contenedor cookieContainer estático privado;
public static readonly DateTime UnixBaseTime á new DateTime(1970, 1, 1, 0, 0, 0, 0);
configuración de la función de solicitud
cadena estática privada Request(acción de cadena, RequestMethod requestType, datos de cadena)
{
Solicitud de WebRequest: WebRequest.Create(“https://api.dotcom-monitor.com/config_api_v1/” + action);
Petición. Método: requestType.ToString();
((HttpWebRequest)). CookieContainer : contenedor;
if (requestType RequestMethod.POST)
{
cadena postData – datos;
if (postData.Length > 0)
{
byte[] byteArray á Encoding.UTF8.GetBytes(postData);
Petición. ContentType á “application/json”;
Petición. ContentLength á byteArray.Length;
Stream dataStream – solicitud. GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
}
Más
{
Petición. ContentLength n.o 0;
}
}
Tratar
{
usando (var response – request. GetResponse())
{
usando (var stream – response. GetResponseStream())
{
si (stream !-null)
{
usando (lector var – new StreamReader(stream))
{
lector de retorno. ReadToEnd();
}
}
}
}
}
captura (excepción ex)
{
usando (var stream – ex. Response.GetResponseStream())
{
usando (lector var – new StreamReader(stream))
{
lanzar una nueva excepción (lector. ReadToEnd());
}
}
}
devolver String.Empty;
}

vacío estático Main()
{
ignorar los errores de certificado
ServicePointManager.ServerCertificateValidationCallback – delegado – devolver true; .
inicializar el contenedor de cookies
contenedor: new CookieContainer();
inicializar el serializador javascript
var serializer á new JavaScriptSerializer();
Iniciar sesión
Console.WriteLine(“‘Inicio de sesión'”);
string resultStr;
Tratar
{
resultStr – Request(“login”, RequestMethod.POST,
Serializador. Serialize(
nuevo ?
Nombre de usuario : “1”,
Contraseña s”1″
}
));
var result – serializador. Deserialize < OperatioResult > (resultStr);
Console.WriteLine(result. ToString());
}
captura (excepción ex)
{
var err – serializador. Deserialize < ErrorResult > (por ejemplo. Mensaje);
Console.WriteLine(err. ToString());
}
obtener plataformas
Console.WriteLine(“‘Obtener plataformas'”);
IEnumerable < Platform platforms á > null;
Tratar
{
resultStr – Request(“platforms”, RequestMethod.GET, String.Empty);
plataformas: serializador. Plataforma < de deserialización[] > (resultStr);
}
catch(Exception ex)
{
var err – serializador. Deserialize < ErrorResult > (por ejemplo. Mensaje);
Console.WriteLine(err. ToString());
}
foreach (plataforma var en plataformas)
{
Console.WriteLine(platform);
}
obtener dispositivos por plataforma
Console.WriteLine(“‘Obtener dispositivos por plataforma'”);
int svDeviceId á 0;
foreach (plataforma var en plataformas. Where(p á > p.Disponible))
{
resultStr – Request(String.Format(“devices/ {0} “, plataforma. Name), RequestMethod.GET, String.Empty);
var ds – serializador. Deserializar < int[] > (resultStr);
foreach (var id in ds)
{
si (svDeviceId , 0 && plataforma. Id. 1)
{
svDeviceId á id;
}
Console.WriteLine(” {0} – {1} “, plataforma. Nombre, id);
}
}
obtener el dispositivo ServerView por id
Console.WriteLine(“‘Obtener dispositivo por id'”);
resultStr á Request(String.Format(“device/ {0} “, svDeviceId), RequestMethod.GET, String.Empty);
var dispositivo – serializador. Deserializar < ServerViewDevice > (resultStr);
editar dispositivo
Console.WriteLine(“‘Editar dispositivo'”);
Dispositivo. Nombre: dispositivo. Nombre + ” (editado)”;
Tratar
{
resultStr – Request(String.Format(“device/ {0} “, dispositivo. Id), RequestMethod.POST,
Serializador. Serialize(dispositivo));
var result – serializador. Deserialize < OperatioResult > (resultStr);
Console.WriteLine(result. ToString());
}
captura (excepción ex)
{
var err – serializador. Deserialize < ErrorResult > (por ejemplo. Mensaje);
Console.WriteLine(err. ToString());
}
obtener monitores
Console.WriteLine(“‘Obtener monitores'”);
IEnumerable < Monitor supervisa el > serializador. Deserialize < Monitor[] > (Request(String.Format(“locations/ {0} “, device. Platform_Id),
RequestMethod.GET, String.Empty));
foreach (monitor var en monitores)
{
Console.WriteLine(monitor);
}
obtener frecuencias
Console.WriteLine(“‘Obtener frecuencias”);
frecuencias var – serializador. Deserialize < int[] > (Request(String.Format(“frequencies/ {0} “, device. Platform_Id),
RequestMethod.GET, String.Empty));
foreach (frecuencia var en frecuencias)
{
Console.WriteLine(frequency);
}
obtener grupos de notificación
Console.WriteLine(“‘Obtener grupos de notificaciones”’);
var ngs – serializador. Deserialize < int[] > (Request(“groups”, RequestMethod.GET, String.Empty));
foreach (var ng in ngs)
{
Console.WriteLine(ng);
}
crear un nuevo dispositivo
Console.WriteLine(“‘Crear dispositivo'”);
dispositivo: nuevo ServerViewDevice
{
Platform_Id- plataformas. Single(p á > p.Name.ToLower() á “serverview”). Id
Nombre: “nuevo dispositivo”,
Frecuencias:0],
Posponer – verdadero,
Ubicaciones: monitores. Where(m á > m.Available && !m.IsPrivate && (m.Id%2 a 0)). Select(m – > m.Id). ToArray(),
Avoid_Simultaneous_Checks verdadero,
Notificaciones: nuevas notificaciones
{
E_Mail_Flag falso,
Pager_Flag falso,
Phone_Flag- falso,
SMS_Flag falso,
Script_Flag falso,
WL_Device_Flag falso,
Notification_Groups. Tomar(1). Select(ng á > new SiteNotifyGroup ?Id? ng, Time_Shift_Min de la página de código de la aplicación: 0 /*0 – Inmediato*/). ToArray()
}
};
int newDeviceId á 0;
Tratar
{
resultStr – Request(“devices?verb-PUT”, RequestMethod.POST,
Serializador. Serialize(dispositivo));
var result – serializador. Deserialize < OperatioResult > (resultStr);
newDeviceId – int. Parse(resultado. Resultado);
Console.WriteLine(result. ToString());
}
captura (excepción ex)
{
var err – serializador. Deserialize < ErrorResult > (por ejemplo. Mensaje);
Console.WriteLine(err. ToString());
}
añadir nueva tarea HTTP
Console.WriteLine(“‘Crear tarea HTTP'”);
resultStr – Request(“tasktypes/” + device. Platform_Id, RequestMethod.GET, String.Empty);
var tts – serializador. Deserializar < TaskType[] > (resultStr);
var httpTT á tts. Single(tt a > tt. Name.ToLower() á “http”);
var task – new HTTPTask
{
Device_Id de correo electrónico: newDeviceId,
Task_Type_Id httpTT.Id,
Nombre: “Nueva tarea HTTP”,
Tiempo de espera 100500,
Tipo de solicitud: “GET”,
Url : “amazon.de”
};
Tratar
{
resultStr – Request(“tasks?verb-PUT”, RequestMethod.POST,
Serializador. Serialize(task));
var result – serializador. Deserialize < OperatioResult > (resultStr);
Console.WriteLine(result. ToString());
}
captura (excepción ex)
{
var err – serializador. Deserialize < ErrorResult > (por ejemplo. Mensaje);
Console.WriteLine(err. ToString());
}

obtener programadores
Console.WriteLine(“‘Obtener programadores'”);
var ss – serializador. Deserialize < int[] > (Request(“schedulers”, RequestMethod.GET, String.Empty));
foreach (var s in ss)
{
Console.WriteLine(serializer. Deserialize < Scheduler > (Request(“scheduler/” + s, RequestMethod.GET, String.Empty)));
}
crear nuevos programadores
Console.WriteLine(“‘Crear nuevos programadores”’ );
var scheduler – nuevo Programador
{
Nombre: “Nuevo”,
Descripción: “descr”,
Date_Time_Intervals de nuevo[] {
nuevo DateTimeInterval
{
Desde á (largo) (nuevo DateTime(2013, 2, 2, 2, 0, 0, 0) – UnixBaseTime). TotalMilliseconds,
A (largo) (nuevo DateTime(2013, 2, 2, 2, 30, 0, 0) – UnixBaseTime). TotalMilliseconds,
}
},
Weekly_Intervals de nuevo[] {
nuevo WeeklyInterval
{
Días nuevo[] “mo”, “tu”, “sa”,
From_Min (int) nuevo TimeSpan(7, 0, 0). TotalMinutes,
To_Min (int) nuevo TimeSpan(13, 0, 0). TotalMinutes,
Incluido – falso
}
}
};
Tratar
{
resultStr – Request(“schedulers?verb-PUT”, RequestMethod.POST,
Serializador. Serialize(scheduler));
var result – serializador. Deserialize < OperatioResult > (resultStr);
Console.WriteLine(result. ToString());
}
captura (excepción ex)
{
var err – serializador. Deserialize < ErrorResult > (por ejemplo. Mensaje);
Console.WriteLine(err. ToString());
}
Console.ReadKey();
}
}
}