Приведенный пример, написанный на C-образной схеме, содержит следующие шаблоны:

Пример СЗ

с помощью системы;
с помощью System.Linq;
с помощью System.Collections.Generic;
с System.IO;
с System.Net;
с помощью System.Text;
с помощью System.Web.Script.Serialization;
пример пространства имен
{
классная программа
{
класс OperatioResult
{
общественный bool Успех – получить; набор;
публичная строка Результат – получить; установить;
публичная переопределение строки ToString()
{
возвращение String.Format {0} (“Успех:” Результат: {1} ” Успех, Результат);
}
}
класс ОшибкаРесульт
{
общественный bool Успех – получить; набор;
публичная строка »ОшибкаРазписка » получить; установить;
публичная переопределение строки ToString()
{
возврат String.Join (Environment.NewLine, ОшибкаВзрачение);
}
}
классНая платформа
{
публичное int Id – получить; установить;
публичное название строки – получить; установить;
общественный bool Доступно – получить; набор;
публичная переопределение строки ToString()
{
возвращение String.Format {0} (“Id:; Имя: {1} ; Доступно: {2} ” Id, Имя, Доступно);
}
}
монитор класса
{
публичное int Id – получить; установить;
публичное название строки – получить; установить;
общественный bool Доступно – получить; набор;
общественный bool IsDeleted – получить; установить;
общественный bool IsPrivate – получить; установить;
публичная переопределение строки ToString()
{
возвращение String.Format {0} (“Id:; Имя: {1} ; Доступно: {2} ; Не имеется: {3} ; IsPrivate: {4} “,
Id, Name, Available, IsDeleted, IsPrivate);
}
}
класс ЕженедельныйИнтервал
{
публичная строка »Дни » получить; набор;
публичная int From_Min – получить; установить;
публичные int To_Min – получить; установить;
общественный bool Включено – получить; набор;
публичная переопределение строки ToString()
{
возвращение String.Format (“Дни:{0}]; From_Min: {1} (Время: {4}); To_Min: {2} (Время: {5}); включенный: {3}”,
String.Join (“, “Дни”), From_Min, To_Min, Включено, TimeSpan.FromMinutes (From_Min), TimeSpan.FromMinutes (To_Min));
}
}
класс DateTimeInterval
{
общественное долго От й получить; набор;
публичное долго, чтобы получить; набор;
публичная переопределение строки ToString()
{
возвращение String.Format (“От: {0} (Время: {2} ); К: {1} (Время: {3} )”,
От, к, UnixBaseTime.AddMilliseconds (от), UnixBaseTime.AddMilliseconds (To));
}
}
класс AssignedToInfo
{
сводка
читать только
/резюме
публичное int’е Устройства – получить; установить;
сводка
читать только
/резюме
публичное int’ Notification_Groups – получить; установить;
публичная переопределение строки ToString()
{
возвращение String.Format (“Устройства: {0} Notification_Groups: {1}
String.Join (“, ” Devices.Select (id > и id.ToString()). Тоаррай ()),
String.Join (“, ” Notification_Groups.Select (id > и id.ToString()). Тоаррай ()));
}
}
класс Планировщик
{
публичное int Id – получить; установить;
публичное название строки – получить; установить;
публичная строка Описание – получить; установить;
публичное ЕженедельноЕинтервале Weekly_Intervals – получить;
публичная ДатаTimeInterval Date_Time_Intervals – получить;
общественные AssignedToInfo Assigned_To – получить; набор;
публичная переопределение строки ToString()
{
возвращение String.Format (“Id: {0}; имя: {1}; описание: {2}; Weekly_Intervals:{3}]; Date_Time_Intervals:{4}]; НазначенОИнфо: {5}”,
Id, Имя, Описание,
String.Join (“, ” Weekly_Intervals.Select (wi и > wi. ToString ()). Тоаррай ()),
String.Join (“, “, Date_Time_Intervals.Select (dti и > dti. ToString ()). Тоаррай ()), Assigned_To);
}
}
класс SiteNotifyGroup
{
публичное int Id – получить; установить;
публичные int Time_Shift_Min – получить; установить;
}
Уведомления класса
{
общественный bool E_Mail_Flag – получить; установить;
публичная строка E_Mail_Address – получить; установить;
публичная int E_Mail_TimeInterval_Min – получить; установить;
общественный bool WL_Device_Flag – получить; установить;
публичная строка WL_Device_Email_Address – получить; установить;
публичная int WL_Device_TimeInterval_Min – получить; установить;
общественный bool Phone_Flag – получить; установить;
публичная строка Phone_Area_Code – получить; установить;
публичная строка Phone_Phone – получить; установить;
публичная int Phone_TimeInterval_Min – получить; установить;
общественный bool SMS_Flag – получить; установить;
публичная строка SMS_Phone – получить; установить;
общественные int SMS_TimeInterval_Min – получить; установить;
общественные bool Script_Flag и получают; комплект;
публичная строка Script_Batch_File_Name – получить; установить;
публичная int Script_TimeInterval_Min – получить; установить;
публичная int SNMP_TimeInterval_Min – получить; установить;
публичный сайтNotifyGroup Notification_Groups – получить;
}
класс ServerViewDevice
{
публичное int Id – получить; установить;
публичная int Platform_Id – получить; установить;
публичное название строки – получить; установить;
публичная int Number_Of_Tasks – получить; установить;
публичная строка Status_Description – получить; набор;
общественный bool Отложить – получить; набор;
общественный bool Send_Uptime_Alert – получить; установить;
публичная int Owner_Device_Id – получить; установить;
публичная int Частота – получить; установить;
публичная int Filter_Id – получить; установить;
общественные int Scheduler_Id – получить; установить;
публичные уведомления Уведомления – получить; установить;
общественный bool Avoid_Simultaneous_Checks – получить; установить;
общественный bool False_Positive_Check – получить; установить;
публичная int Alert_Silence_Min – получить; установить;
публичное int’locations – получить; установить;
}
класс TaskType
{
публичное int Id – получить; установить;
публичное название строки – получить; установить;
}
класс NameValuePair
{
публичное название строки – получить; установить;
публичная строка Значение – получить; установить;
}
класс HTTPTask
{
общественные int Device_Id – получить; установить;
публичное int Id – получить; установить;
общественные int Task_Type_Id – получить; установить;
публичное название строки – получить; установить;
публичный int Тайм-аут – получить; установить;
публичная строка RequestType – получить; установить;
публичная строка Url – получить; установить;
публичная строка Keyword1 – получить; установить;
публичная строка Keyword2 – получить; установить;
публичная строка Keyword3 – получить; установить;
публичная строка UserName – получить; установить;
публичная строка UserPass – получить; установить;
общественный bool FullPageDownload – получить; установить;
общественный bool Download_Html – получить; установить;
общественный bool Download_Frames – получить; установить;
общественный bool Download_StyleSheets – получить; установить;
общественный bool Download_Scripts – получить; установить;
общественный bool Download_Images – получить; установить;
общественный bool Download_Objects – получить; установить;
общественный bool Download_Applets – получить; установить;
общественный bool Download_Additional – получить; установить;
публичное NameValuePair’GetParams – получить;
публичное nameValuePair’ PostParams – получить;
публичное nameValuePair’ HeaderParams – получить;
строка PrepareScript – получить; установить;
}
enum ЗапросМетод
{
Получить
Поместить
}
частный статический контейнер CookieContainer;
публичная статическая статическая readonly DateTime UnixBaseTime – новое время даты (1970, 1, 1, 0, 0, 0, 0);
настройка функции запроса
частная статическая строка Запрос (строка действия, RequestMethod requestType, строка данных)
{
WebRequest запрос – WebRequest.Create (“https://api.dotcom-monitor.com/config_api_v1/” – действие);
просьба. Метод и запросType.ToString();
((HttpWebRequest) запрос). CookieContainer – контейнер;
если (запросType и RequestMethod.POST)
{
строка postData и данные;
если (postData.Length > 0)
{
байтэ- байтАррай – Кодирование.UTF8.GetBytes (postData);
просьба. ContentType – “приложение/json”;
просьба. СодержаниеЛенгт и byteArray.Length;
Поток данныхСтрим – запрос. GetRequestStream();
dataStream.Write (byteArray, 0, byteArray.Length);
}
еще
{
просьба. СодержаниеЛент No 0;
}
}
попытка
{
использование (var ответ и запрос. Получитьответ ())
{
с помощью (var stream и ответ. GetResponseStream())
{
если (поток! – нулевой)
{
с помощью (var reader – новый StreamReader (поток))
{
вернуть читателя. ReadToEnd ();
}
}
}
}
}
поймать (Исключение ex)
{
с помощью (var stream и ex. Ответ.GetResponseStream())
{
с помощью (var reader – новый StreamReader (поток))
{
бросить новое исключение (читатель. ReadToEnd ());
}
}
}
возвращение String.Empty;
}

статическая пустота Главная ()
{
игнорировать ошибки сертификата
ServicePointManager.ServerCertificateValidationCallback – делегат – возвращение верно;
инициализировать контейнер для файлов cookie
контейнер – новый CookieContainer();
инициализировать javascript сериализатор
var serializer – новый JavaScriptSerializer ();
логин
Консоль.WriteLine (“Логин”) ;
строка resultStr;
попытка
{
resultStr – Запрос (“войти”, RequestMethod.POST,
сериализатор. Сериализовать,
новый
Имя пользователя – “1”,
Пароль No “1”
}
));
var результат – сериализатор. Десериализировать < OperatioResult > (resultStr);
Консоль.WriteLine (результат. ToString ());
}
поймать (Исключение ex)
{
var ошибка и сериализатор. Дезериализировать < ОшибкаРезультт > (например. Сообщение);
Консоль.WriteLine (ошибка. ToString ());
}
получить платформы
Консоль.WriteLine (“Получить платформы”) ;
Платформы IEnumerable < Platform > – нулевые;
попытка
{
resultStr – Запрос (“платформы”, RequestMethod.GET, String.Empty);
платформы и сериализатор. Дезериализировать < платформу > (resultStr);
}
улов (Исключение ex)
{
var ошибка и сериализатор. Дезериализировать < ОшибкаРезультт > (например. Сообщение);
Консоль.WriteLine (ошибка. ToString ());
}
foreach (платформа var в платформах)
{
Console.WriteLine (платформа);
}
получить устройства по платформе
Консоль.WriteLine (“Получить устройства на платформе”) ;
int svDeviceId No 0;
foreach (var платформа в платформах. Где (p > и p.Available))
{
resultStr – Запрос (String.Format(“устройства/”, {0} платформа. Имя), RequestMethod.GET, String.Empty);
var ds и сериализатор. Deserialize < > int(resultStr);
foreach (var id in ds)
{
если (svDeviceId – платформа 0. Id No 1)
{
svDeviceId и id;
}
Console.WriteLine {0} (“- {1} “, платформа. Имя, id);
}
}
получить устройство ServerView по идентификатору
Консоль.WriteLine (“Получить устройство с помощью id'”);
resultStr – Запрос (String.Format (“устройство/”, {0} svDeviceId), RequestMethod.GET, String.Empty);
var устройство – сериализатор. Дезериализировать < ServerViewDevice > (resultStr);
редактировать устройство
Консоль.WriteLine (“Отредактированное устройство”);
устройство. Имя и устройство. Имя No ” (отредактировано)”;
попытка
{
resultStr – Запрос (String.Format(“устройство/”, {0} устройство. Id), RequestMethod.POST,
сериализатор. Сериализовать (устройство));
var результат – сериализатор. Десериализировать < OperatioResult > (resultStr);
Консоль.WriteLine (результат. ToString ());
}
поймать (Исключение ex)
{
var ошибка и сериализатор. Дезериализировать < ОшибкаРезультт > (например. Сообщение);
Консоль.WriteLine (ошибка. ToString ());
}
получить мониторы
Консоль.WriteLine (“Получить мониторы”) ;
Мониторы IEnumerable < Monitor > и сериализатор. Deserialize < Monitor > (Запрос (String.Format(“Локации/”, {0} устройство. Platform_Id),
RequestMethod.GET, String.Empty));
foreach (var монитор в мониторах)
{
Консоль.WriteLine (монитор);
}
получить частоты
Консоль.WriteLine (“Получить частоты”) ;
var частоты и сериализатор. Deserialize < int > (Запрос (String.Format(“частоты/”, {0} устройство. Platform_Id),
RequestMethod.GET, String.Empty));
foreach (частота var в частотах)
{
Console.WriteLine (частота);
}
получить группы уведомлений
Консоль.WriteLine (“Получить группы уведомлений”) ;
var ngs – сериализатор. Deserialize < int(Запрос > (“группы”, RequestMethod.GET, String.Empty));
foreach (var ng in ngs)
{
Консоль.WriteLine (ng);
}
создать новое устройство
Консоль.WriteLine (“Создай устройство”);
устройство – новый ServerViewDevice
{
Platform_Id и платформы. Одноместный > (p.Name.ToLower() – “сервервью”). идентификатор
Название – “новое устройство”,
Частота и частоты,
Отложить и правда,
Местоположения и мониторы. Где > (м.м.Доступно ! m.IsPrivate и (m.Id%2 й 0)). Выберите (м > и m.Id). Тоаррай (),
Avoid_Simultaneous_Checks правда,
Уведомления и новые уведомления
{
E_Mail_Flag – ложная,
Pager_Flag – ложная,
Phone_Flag – ложная,
SMS_Flag – ложная,
Script_Flag – ложная,
WL_Device_Flag – ложный,
Notification_Groups нгс. Взять (1). Выберите (нг > – новый siteNotifyGroup (Id – ng, Time_Shift_Min – 0 / 0 – Immediate). Тоаррай ()
}
};
int newDeviceId No 0;
попытка
{
resultStr – Запрос (“устройства?verb’PUT”, RequestMethod.POST,
сериализатор. Сериализовать (устройство));
var результат – сериализатор. Десериализировать < OperatioResult > (resultStr);
newDeviceId и int. Парс (результат. Результат);
Консоль.WriteLine (результат. ToString ());
}
поймать (Исключение ex)
{
var ошибка и сериализатор. Дезериализировать < ОшибкаРезультт > (например. Сообщение);
Консоль.WriteLine (ошибка. ToString ());
}
добавить новую задачу HTTP
Консоль.WriteLine (“Создай задачу HTTP”);
resultStr – Запрос (“задачи/” – устройство. Platform_Id, RequestMethod.GET, String.Empty);
var tts – сериализатор. Дезериализировать < TaskType > (resultStr);
вар httpTT и TTs. Одноместный (tt > и tt. Name.ToLower () – “http”);
var задача – новый HTTPTask
{
Device_Id и newDeviceId,
Task_Type_Id и httpTT.Id,
Название – “Новая задача HTTP”,
Тайм-аут 100500,
ЗапросТип и “GET”,
Урл и “amazon.de”
};
попытка
{
resultStr – Запрос (“задачи?verb’PUT”, RequestMethod.POST,
сериализатор. Сериализации (задачи));
var результат – сериализатор. Десериализировать < OperatioResult > (resultStr);
Консоль.WriteLine (результат. ToString ());
}
поймать (Исключение ex)
{
var ошибка и сериализатор. Дезериализировать < ОшибкаРезультт > (например. Сообщение);
Консоль.WriteLine (ошибка. ToString ());
}

получить планировщики
Консоль.WriteLine (“Получить планировщики”) ;
var ss и сериализатор. Deserialize < int > (Запрос (“планировщики”, RequestMethod.GET, String.Empty));
foreach (var s в ss)
{
Консоль.WriteLine (сериализатор. Deserialize < Scheduler > (Запрос (“планировщик/” s, RequestMethod.GET, String.Empty)));
}
создание новых планировщиков
Консоль.WriteLine (“Создайте новые планировщики”);
var планировщик – новый Планировщик
{
Название – “Новый”,
Описание и “descr”,
Date_Time_Intervals и новый»
{
новая датаTimeИнтервейтвал
{
От No (длинный) (новый DateTime(2013, 2, 2, 2, 0, 0, 0) – UnixBaseTime). ВсегоМиллисекунд,
В No (длинный) (новый DateTime (2013, 2, 2, 2, 30, 0, 0) – UnixBaseTime). ВсегоМиллисекунд,
}
},
Weekly_Intervals и новый»
{
новый ЕженедельникИнтервал
{
Дни – новые, “мо”, “ту”, “са”,
From_Min (int) новый TimeSpan (7, 0, 0). Всегомяти,
To_Min (int) новый TimeSpan (13, 0, 0). Всегомяти,
Включено – ложно
}
}
};
попытка
{
resultStr – Запрос (“планировщики?verb-PUT”, RequestMethod.POST,
сериализатор. Сериализировать (планировщик));
var результат – сериализатор. Десериализировать < OperatioResult > (resultStr);
Консоль.WriteLine (результат. ToString ());
}
поймать (Исключение ex)
{
var ошибка и сериализатор. Дезериализировать < ОшибкаРезультт > (например. Сообщение);
Консоль.WriteLine (ошибка. ToString ());
}
Консоль.ReadKey ();
}
}
}