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();
}
}
}