Exemplo n.º 1
0
        public void ReadCommand(ISiteDatabaseProvider sites, CancellationTokenSource cts, ref bool endWork, ref bool asyncCheckRestart)
        {
            Site         site;
            SiteResponse response;
            string       command = ReadLine();

            switch (command.ToLower())
            {
            case "добавить":
                site = GetSiteWithFrequencyFromUser();
                if (site != null)
                {
                    try
                    {
                        sites.AddSite(site);
                    }
                    catch (SiteCheckingFrequencyException e)
                    {
                        PrintString($"Ошибка добавления сайта: {e.Message}", true);
                    }
                    catch (Exception e)
                    {
                        PrintString($"Ошибка добавления сайта: {e.Message}", true);
                    }
                }
                break;

            case "удалить":
                site = GetSiteFromUser();
                sites.RemoveSite(site);
                break;

            case "сохранить":
                try
                {
                    sites.CommitChanges();
                }
                catch (DatabaseFileNotFoundException e)
                {
                    PrintString($"Ошибка сохранения данных: {e.Message}", true);
                }
                catch (DatabaseException e)
                {
                    PrintString($"Ошибка сохранения данных: {e.Message}", true);
                }
                catch (DatabaseNullArgumentException e)
                {
                    PrintString($"Ошибка сохранения данных: {e.Message}", true);
                }
                catch (Exception e)
                {
                    PrintString($"Ошибка сохранения данных: {e.Message}", true);
                }
                finally
                {
                    cts.Cancel();
                }
                break;

            case "сброс":
                try
                {
                    sites.ReloadSites();
                }
                catch (DatabaseFileNotFoundException e)
                {
                    PrintString($"Ошибка загрузки данных: {e.Message}", true);
                }
                catch (DatabaseException e)
                {
                    PrintString($"Ошибка загрузки данных: {e.Message}", true);
                }
                catch (DatabaseNullArgumentException e)
                {
                    PrintString($"Ошибка сохранения данных: {e.Message}", true);
                }
                catch (Exception e)
                {
                    PrintString($"Ошибка загрузки данных: {e.Message}", true);
                }
                break;

            case "печать":
                PrintSites(sites);
                break;

            case "проверка":
                site     = GetSiteFromUser();
                response = new SiteResponse(site);
                PrintString($"{site.Address}: {response.GetStatusCode()} - {response.GetStatusCodeText()}", true);
                break;

            case "выключение":
                cts.Cancel();
                endWork = true;
                break;

            case "справка":
                PrintCommandList();
                break;

            default:
                PrintString("Неизвестная команда. Проверьте правильность ввода или введите \"Справка\" для просмотра списка команд", true);
                break;
            }
        }