// генерация рандомных доменных имен из перечня в массиве 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);
        }
Exemple #4
0
        // 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);
        }