// генерация рандомных доменных имен из перечня в массиве DomainNamesArray public string GetRandomDomainName() { string correctDomain = ""; Random indexRandom = new Random(); // длина массива DomainNamesArray int indexNumber = DomainNamesArray.Length; int randomNumber; do { // получение случайного индекса данного массива randomNumber = indexRandom.Next(indexNumber - 1); // выбор доменного имени по рандомному индексу string randomDomainName = DomainNamesArray[randomNumber]; Console.Write($"Сгенерировано доменное имя: "); ColorWrite.WriteLineColor($"{randomDomainName}\n", 10); // проверка рандомного доменного имени (в списках тоже могут быть ошибки) correctDomain = Validation.Validate(randomDomainName); if (correctDomain == "error") { ColorWrite.WriteLineColor("Использование некорректного названия доменного имени невозможно. Попробуйте еще!", 12); Console.WriteLine("Нажмите на любую клавишу"); Console.ReadKey(); } } while (correctDomain == "error"); return(correctDomain); }
public ShowInfo(Dictionary <string, HttpStatusCode> ListAndResponseCodes) { int countAvailable = 0; int countNotAvailable = 0; int countUnknown = 0; int countAnother = 0; foreach (var element in ListAndResponseCodes) { if ((int)element.Value >= 200 && (int)element.Value < 300) { countAvailable++; } else if ((int)element.Value >= 300 && (int)element.Value < 500) { countUnknown++; } else if ((int)element.Value >= 500 && (int)element.Value < 600) { countNotAvailable++; } else { countAnother++; } } ColorWrite.WriteLineColor("ИНФОРМАЦИЯ О РЕЗУЛЬТАТАХ ЗАПРОСОВ:", 14); Console.WriteLine($"Доступных сайтов: Количество: {countAvailable} Коды ответа: 200-206"); Console.WriteLine($"Недоступных сайтов: Количество: {countNotAvailable} Код ответа: 500-505"); Console.WriteLine($"Не извествестно: Количество: {countUnknown} Код ответа: 300-417"); Console.WriteLine($"Другие: Количество: {countAnother} Код ответа: <200 или >600"); Console.WriteLine(); }
public static int CorrectSelect(int attemps) { int selectNumber; int count = 1; bool IsNumber = false; do { Console.Write($"У вас есть {attemps} попытки для ввода: "); if (int.TryParse(Console.ReadLine(), out selectNumber)) { IsNumber = true; } else { if (count >= attemps) { ColorWrite.WriteLineColor("\nВы использовали лимит попыток. ", 12); ColorWrite.WriteLineColor($"Это уже {count} попытка.", 14); ColorWrite.WriteLineColor("Будьте внимательнее! Попробуйте еще!", 12); break; } ColorWrite.WriteLineColor("Введите, пожалуйста. целое число! Попробуйте еще раз", 12); ColorWrite.WriteLineColor($"Осталось попыток: {attemps - count}\n", 14); count++; } } while (!IsNumber && count < attemps + 1); return(selectNumber); }
// 3. Введите url 1 сайта[пользователь вводит нажимает Enter], введите url 2 сайта[пользователь вводит нажимает Enter] и т.д. // получение ответа от сервера по заданному доменному имени public static Dictionary <string, HttpStatusCode> IsResponseFrom(List <string> awaitList) { var verifeidList = new Dictionary <string, HttpStatusCode>(); int count = 1; ColorWrite.WriteLineColor("\nОТВЕТЫ ОТ ДОМЕННЫХ ИМЕН: ", 14); foreach (string domain in awaitList) { HttpWebRequest reqw = (HttpWebRequest)HttpWebRequest.Create(domain); HttpStatusCode statusCode; try { //создаем объект отклика HttpWebResponse resp = (HttpWebResponse)reqw.GetResponse(); Console.Write($"{count}. Ответ с сервера "); ColorWrite.WriteLineColor(domain, 14); ColorWrite.WriteLineColor("Успешный ответ", 10); count++; // получаем код ответа statusCode = resp.StatusCode; Console.WriteLine("Статус код ответа: "); ColorWrite.WriteLineColor($"{(int)statusCode} {statusCode}", 10); // статус код ответа Console.WriteLine(); // добавляем в словарь (ассоциативный массив) новый элемент: где ключ - доменное имя, значение - код ответа verifeidList.Add(domain, statusCode); } catch (WebException ex) { Console.Write($"{count}. Ответ с сервера "); ColorWrite.WriteLineColor(domain, 14); count++; ColorWrite.WriteLineColor($"Упс! Что-то пошло не так!\nКод ошибки: {ex.Message}", 12); Console.WriteLine("Статус код ответа: "); if (ex.Response != null) { // полуачам код ответа из сообщения об исключении statusCode = ((HttpWebResponse)ex.Response).StatusCode; // статус код ответа ColorWrite.WriteLineColor($"{(int)statusCode} {statusCode}\n", 12); // добавляем в словарь (ассоциативный массив) новый элемент: где ключ - доменное имя, значение - код ответа verifeidList.Add(domain, statusCode); } else { ColorWrite.WriteLineColor("нет ответа\n", 12); // статус код ответа // когда нет ответа, код ответа - 0 verifeidList.Add(domain, (HttpStatusCode)0); } } } return(verifeidList); }
public ShowInfo(List <string> InsertDomainArray) { ColorWrite.WriteLineColor("СПИСОК ВВЕДЕННЫХ ДОМЕННЫХ ИМЕН:", 14); foreach (string site in InsertDomainArray) { Console.Write("Доменное имя: "); ColorWrite.WriteLineColor(site, 10); } Console.WriteLine(); }
public static int SelectNumberOfSites() { ColorWrite.WriteLineColor("ПРИЛОЖЕНИЕ ПО ПАРСИНГУ СОЕДИНЕНИЙ\nс доменными именами\n", 10); Console.WriteLine("Введите количество доменных имен для проверки соединения: "); int attemps = 4; // количество попыток ввода int NumberOfSites = CorrectSelect(attemps); // корректный результат ввода чисел // отпарсенный out параметр return(NumberOfSites); }
// сдесь будет отображаться логика приложения // 1. Введите количество сайтов, которые хотите проверить? Нужно убедиться, что пользователь ввел число, если нет, то вывести // "введите пожалуйста целое число" и попросить ввести заново, // 2. Установить лимит на кол-во попыток, например, после 4-х неправильных попыток ввода закрыть приложение) // проверка на соответствие типу Int32 public static int CorrectSelect() { int selectNumber; bool IsNumber = false; do { if (int.TryParse(Console.ReadLine(), out selectNumber)) { IsNumber = true; } else { ColorWrite.WriteLineColor("Введите, пожалуйста. целое число! Попробуйте еще раз", 12); } } while (!IsNumber); return(selectNumber); }
// ввод пользователем доменных имен public string GetManualDomainName() { string correctDomain = ""; do { if (correctDomain == "error") { ColorWrite.WriteLineColor("Использование некорректного названия доменного имени невозможно. Введите еще раз!", 12); } Console.Write("Введено доменное имя: "); // ввод доменного имени пользователем string manualDomainName = Console.ReadLine(); Console.WriteLine(); // проверка доменного имени, введенного пользователем correctDomain = Validation.Validate(manualDomainName); } while (correctDomain == "error"); return(correctDomain); }
public void FullInformationAboutSites(Dictionary <string, HttpStatusCode> verifiedList) { List <string> availableList = new List <string>(); List <string> notAvailableList = new List <string>(); List <string> unknownList = new List <string>(); List <string> anotherList = new List <string>(); int countAvailable = 0; int countNotAvailable = 0; int countUnknown = 0; int countAnother = 0; foreach (var element in verifiedList) { if ((int)element.Value >= 200 && (int)element.Value < 300) { countAvailable++; availableList.Add(element.Key); } else if ((int)element.Value >= 300 && (int)element.Value < 500) { countUnknown++; unknownList.Add(element.Key); } else if ((int)element.Value >= 500 && (int)element.Value < 600) { countNotAvailable++; notAvailableList.Add(element.Key); } else { countAnother++; anotherList.Add(element.Key); } } ColorWrite.WriteLineColor("ПОДРОБНАЯ ИНФОРМАЦИЯ О РЕЗУЛЬТАТАХ ЗАПРОСОВ:", 14); ColorWrite.WriteColor($"\nДоступных сайтов: ", 10); foreach (var element in availableList) { Console.Write(element); if (element != null) { Console.Write(", "); } } Console.WriteLine($"\nКоличество: {countAvailable} Коды ответа: 200-206"); ColorWrite.WriteColor($"\nНедоступных сайтов: ", 12); foreach (var element in notAvailableList) { Console.Write(element); if (element != null) { Console.Write(", "); } } Console.WriteLine($"\nКоличество: {countNotAvailable} Код ответа: 500-505"); ColorWrite.WriteColor($"\nНе извествестно: ", 14); foreach (var element in unknownList) { Console.Write(element); if (element != null) { Console.Write(", "); } } Console.WriteLine($"\nКоличество: {countUnknown} Код ответа: 300-417"); ColorWrite.WriteColor($"\nДругие: ", 10); foreach (var element in anotherList) { Console.Write(element); if (element != null) { Console.Write(", "); } } Console.WriteLine($"\nКоличество: {countAnother} Код ответа: <200 или >600"); }
public static List <string> GetListDomainName(int number) { int count = 1; // счетчик var InsertDomainArray = new List <string>(); // список строк Domains domainName = new Domains(); Console.WriteLine($"Введите названия {number} доменных имен (названий сайтов):\n"); // повторяющийся number раз цикл ввода доменных имен do { ColorWrite.WriteLineColor($"Введите {count}-ое доменное имя: ", 10); if (count == 1) { Console.Write("Ввести вручную (1) или создать автоматически (2), или ввести сразу списком (3): "); } else if (count > 1) { Console.Write("Ввести вручную (1) или создать автоматически (2): "); } if (!int.TryParse(Console.ReadLine(), out int selectNumber)) { ColorWrite.WriteLineColor("Вы ввели неправильно. Повторите\n", 12); break; } string nextElement = ""; switch (selectNumber) { case 1: ColorWrite.WriteLineColor("Будет введено вручную:\n", 14); // логика ввода вручную nextElement = domainName.GetManualDomainName(); if (!InsertDomainArray.Contains(nextElement)) { InsertDomainArray.Add(nextElement); } else { ColorWrite.WriteLineColor($"Доменное имя {nextElement} уже существует в списке. Попробуйте еще раз!\n", 12); number++; count--; } break; case 2: ColorWrite.WriteLineColor("Будет создано автоматически:\n", 14); // логика создания автоматически nextElement = domainName.GetRandomDomainName(); if (!InsertDomainArray.Contains(nextElement)) { InsertDomainArray.Add(nextElement); } else { ColorWrite.WriteLineColor($"Доменное имя {nextElement} уже существует в списке. Попробуйте еще раз!\n", 12); number++; count--; } break; case 3: ColorWrite.WriteLineColor("Будет введено списком:\n", 14); // логика ввода списком // получение всего списка одной строкой InsertDomainArray = domainName.GetStringDomainName(); // парсинг строки в список отдельных доменных имен break; default: ColorWrite.WriteLineColor("По ходу, ошибка: \nВыберите (1) - вручную или (2) - автоматическиб или (3) - списком\n", 12); // логика по дефолту nextElement = domainName.GetDefoultValue(); if (!InsertDomainArray.Contains(nextElement)) { InsertDomainArray.Add(nextElement); } else { ColorWrite.WriteLineColor($"Дефолтное доменное имя {nextElement} уже существует в списке. Нужно ввести еще раз!\n", 12); number++; count--; } break; } number--; count++; } while (number != 0); return(InsertDomainArray); }