Beispiel #1
0
        private static void ShowMenuAddWatcher()
        {
            bool menuClose = false;

            while (!menuClose)
            {
                Prompts.PromptMenuAction("Add a Watcher");
                var  friendlyName    = Prompts.PromptQuestion("Enter a name for this tracker");
                var  pageURL         = Prompts.PromptQuestion("Enter the page URL to monitor");
                var  keyWord         = Prompts.PromptQuestion("Enter the keyword you want to look for (case sensitive)");
                bool alertOnNotExist = Prompts.PromptYesNo($"Do you want the alert to trigger when this keyword doesn't exist?{Environment.NewLine} (if no then alert triggers when the keyword does exist)");
                var  newTracker      = new TrackedProduct()
                {
                    FriendlyName           = friendlyName,
                    PageURL                = pageURL,
                    Keyword                = keyWord,
                    AlertOnKeywordNotExist = alertOnNotExist
                };
                Prompts.PromptWatcherAlertType(newTracker);
                newTracker.Save();
                Log.Information("Created new tracker! {Tracker}", newTracker);
                Console.Write($"Successfully created tracker! {Environment.NewLine}URL: {newTracker.PageURL}");
                menuClose = true;
                StopForMessage();
                Console.Clear();
            }
            Log.Information("Exited Menu AddWatcher");
        }
Beispiel #2
0
        private static void ShowWatcherProperties(TrackedProduct selectedTracker)
        {
            Console.Clear();
            var menu = Prompts.PromptMenuAction("Watcher Properties", displayMenu: false);

            menu += "FriendlyName".ConvertToMenuProperty(selectedTracker.FriendlyName);
            menu += "PageURL".ConvertToMenuProperty(selectedTracker.PageURL);
            menu += "Keyword".ConvertToMenuProperty(selectedTracker.Keyword);
            menu += "AlertNoKeyword".ConvertToMenuProperty(selectedTracker.AlertOnKeywordNotExist.ToString());
            menu += "Enabled".ConvertToMenuProperty(selectedTracker.Enabled.ToString());
            menu += "AlertInterval".ConvertToMenuProperty(selectedTracker.AlertInterval.ToString());
            menu += "AlertType".ConvertToMenuProperty(selectedTracker.AlertType.ToString());
            if (selectedTracker.AlertType == AlertType.Email)
            {
                menu += "Emails".ConvertToMenuProperty(selectedTracker.Emails.ToString());
            }
            else if (selectedTracker.AlertType == AlertType.Webhook)
            {
                menu += "WebHookURL".ConvertToMenuProperty(selectedTracker.WebHookURL);
                menu += "MentionString".ConvertToMenuProperty(selectedTracker.MentionString);
            }
            menu = menu.AddSeperatorTilde();
            Console.Write(menu);
            StopForMessage();
        }
Beispiel #3
0
        private static void ShowMenuSettings()
        {
            bool menuClose = false;

            while (!menuClose)
            {
                var      menuTitle   = "Settings Menu";
                var      description = "Select a setting to modify or an action:";
                string[] choices     = new string[]
                {
                    "Back to the Main Menu",
                    "Show Running Environment & Settings Details",
                    "Check for an Update",
                    "Email Settings",
                    "Enable Beta Updates"
                };
                int answer = Prompts.PromptMenu(menuTitle, choices, description);
                switch (answer)
                {
                case 1:
                    menuClose = true;
                    break;

                case 2:
                    ShowEnvironmentVariables();
                    break;

                case 3:
                    bool updateAvailable = Core.CheckForUpdate();
                    if (updateAvailable)
                    {
                        Console.WriteLine("An update is available and is downloading now, we'll alert you when it's ready");
                    }
                    else
                    {
                        Console.WriteLine("You are on the latest version!");
                    }
                    StopForMessage();
                    break;

                case 4:
                    Prompts.PromptEmailSettings();
                    break;

                case 5:
                    Constants.Config.BetaUpdates = Prompts.PromptYesNo("Would you like to get Beta versions of this app? (Some updates may be unstable)");
                    break;

                default:
                    Log.Information("Answer entered wasn't a valid presented option");
                    Console.WriteLine("Answer entered isn't one of the options, please press enter and try again");
                    Console.ReadLine();
                    break;
                }
                Console.Clear();
            }
        }
Beispiel #4
0
        private static void ShowMenuOpenDirectory()
        {
            bool menuClose = false;

            while (!menuClose)
            {
                string   menuName    = "Open Directory";
                string   description = "Which directory would you like to open?";
                string[] menuChoices = new string[]
                {
                    "Open Config Directory",
                    "Open Log Directory",
                    "Open SaveData Directory",
                    "Back to Main Menu"
                };
                int answer = Prompts.PromptMenu(menuName, menuChoices, description);
                switch (answer)
                {
                case 1:
                    if (Core.OpenDir(AppFile.Config) != StatusReturn.Success)
                    {
                        UI.StopForMessage();
                    }
                    break;

                case 2:
                    if (Core.OpenDir(AppFile.Log) != StatusReturn.Success)
                    {
                        UI.StopForMessage();
                    }
                    break;

                case 3:
                    if (Core.OpenDir(AppFile.SavedData) != StatusReturn.Success)
                    {
                        UI.StopForMessage();
                    }
                    break;

                case 4:
                    menuClose = true;
                    break;

                default:
                    Log.Information("Answer entered wasn't a valid presented option");
                    Console.WriteLine("Answer entered isn't one of the options, please press enter and try again");
                    Console.ReadLine();
                    break;
                }
                Console.Clear();
            }
            Log.Information("Exited Menu OpenDirectory");
        }
Beispiel #5
0
        internal static void CloseApp()
        {
            var answer = true;

            #if !DEBUG
            answer = Prompts.PromptYesNo("Are you sure you want to close the bot?");
            #endif
            Log.Debug("Closing app called w/ an answer", answer, Constants.CloseApp);
            if (answer)
            {
                Constants.CloseApp = true;
            }
            Log.Information("Closing app", answer, Constants.CloseApp);
            Core.SaveEverything();
        }
Beispiel #6
0
        private static void ShowMenuTestKeywordOnWebpage()
        {
            bool menuClose = false;

            while (!menuClose)
            {
                Prompts.PromptMenuAction("Test Keyword On Webpage");
                var      webpage  = Prompts.PromptQuestion("Enter the webpage URL");
                var      keyword  = Prompts.PromptQuestion("Enter the keyword");
                WebCheck webCheck = null;

                try
                {
                    webCheck = Communication.WebCheckForKeyword(webpage, keyword).WaitAndUnwrapException();
                    Console.WriteLine("The webpage that was returned was empty/blank");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Error from webpage: {ex.Message}");
                }

                if (webCheck != null)
                {
                    if (webCheck.KeywordExists)
                    {
                        Console.WriteLine("The keyword was found!");
                    }
                    else
                    {
                        Console.WriteLine($"Webpage Response StatusCode: {webCheck.ResponseCode}");
                        Console.WriteLine("The keyword wasn't found on the webpage :(");
                    }
                }
                var tryAgain = Prompts.PromptYesNo("Would you like to do another test?");
                if (!tryAgain)
                {
                    menuClose = true;
                }
                Console.Clear();
            }
            Log.Information("Exited Menu TestKeywordOnWebpage");
        }
Beispiel #7
0
        internal static int PromptMenuTrackers(string menuTitle, int currentPage, out List <List <TrackedProduct> > trackerList, string description = "")
        {
            Console.Clear();
            Log.Debug("Displaying MenuTrackers: {MenuTitle}", menuTitle);
            var menuClose = false;
            int intAnswer = 0;

            trackerList = new List <List <TrackedProduct> >();
            while (!menuClose)
            {
                var menu = Prompts.PromptMenuAction(menuTitle, description, false);
                menu += "Back to Main Menu".ConvertToMenuOption(1);

                menu = Handler.GetTrackersForMenu(menu, currentPage, out trackerList);
                if (trackerList[0].Count <= 0)
                {
                    Console.WriteLine($"There currently aren't any trackers created!{Environment.NewLine}" +
                                      $"Please create one before attempting to test, press enter to continue");
                    Console.ReadLine();
                    return(-1);
                }
                menu  = menu.AddSeperatorTilde();
                menu += $"{Environment.NewLine}Current Page: {currentPage}{Environment.NewLine}Option: ";
                Console.Write(menu);
                var answer = Console.ReadLine();
                Log.Debug("Menu prompt answered: {Answer}", answer);
                if (!int.TryParse(answer, out intAnswer))
                {
                    Log.Debug("Menu answer entered was an invalid response");
                    Console.WriteLine("Answer wasn't invalid, please press enter and try again");
                    Console.ReadLine();
                }
                else
                {
                    menuClose = true;
                }
            }
            Log.Debug("Valid menu option was entered: {Answer}", intAnswer);
            return(intAnswer);
        }
Beispiel #8
0
        private static void ShowMenuTestWatcherAlert()
        {
            bool menuClose   = false;
            int  currentPage = 1;

            while (!menuClose)
            {
                string menuName    = "Test Watcher Alert";
                string description = "Select the watcher alert you want to test:";
                var    answer      = Prompts.PromptMenuTrackers(menuName, currentPage, out List <List <TrackedProduct> > trackerList, description);
                if (answer < 0)
                {
                    return;
                }

                var trackerPage = trackerList[currentPage - 1];
                if (answer == 1)
                {
                    menuClose = true;
                }
                else if (answer > 0 && answer <= trackerPage.Count + 1)
                {
                    var selectedTracker = trackerPage.ElementAt(answer - 2);
                    Watcher.ProcessAlertToTest(selectedTracker);
                    Console.WriteLine($"Sent test alert for the tracker: {selectedTracker.FriendlyName}");
                    StopForMessage();
                }
                else if (answer > trackerPage.Count + 1 && currentPage >= 2)
                {
                    currentPage--;
                }
                else if (answer > trackerPage.Count + 1 && currentPage < trackerList.Count)
                {
                    currentPage++;
                }
                Console.Clear();
            }
            Log.Information("Exited Menu TestWatcherAlert");
        }
Beispiel #9
0
        private static void ShowMenuModifyWatcher()
        {
            bool menuClose   = false;
            int  currentPage = 1;

            while (!menuClose)
            {
                string menuName    = "Modify Watcher";
                string description = "Select the watcher you wish to modify:";
                var    answer      = Prompts.PromptMenuTrackers(menuName, currentPage, out List <List <TrackedProduct> > trackerList, description);
                if (answer < 0)
                {
                    return;
                }

                var trackerPage = trackerList[currentPage - 1];
                if (answer == 1)
                {
                    menuClose = true;
                }
                else if (answer > 0 && answer <= trackerPage.Count + 1)
                {
                    var selectedTracker = trackerPage.ElementAt(answer - 2);
                    ShowMenuModifySingleWatcher(selectedTracker);
                }
                else if (answer > trackerPage.Count + 1 && currentPage >= 2)
                {
                    currentPage--;
                }
                else if (answer > trackerPage.Count + 1 && currentPage < trackerList.Count)
                {
                    currentPage++;
                }
                Console.Clear();
            }
            Log.Information("Exited Menu ModifyWatcher");
        }
Beispiel #10
0
        private static void ShowMenuModifySingleWatcher(TrackedProduct selectedTracker)
        {
            Console.Clear();
            bool menuClose     = false;
            bool removeWatcher = false;

            while (!menuClose)
            {
                string menuName    = $"Modify: {selectedTracker.FriendlyName}";
                string description = "Select the property you wish to modify:";
                var    answer      = Prompts.PromptMenuTrackerProperties(menuName, description);

                switch (answer)
                {
                case 1:
                    menuClose = true;
                    break;

                case 2:
                    selectedTracker.FriendlyName = Prompts.PromptQuestion("Enter a new Friendly Name");
                    break;

                case 3:
                    selectedTracker.PageURL = Prompts.PromptQuestion("Enter a new Page URL");
                    break;

                case 4:
                    selectedTracker.Keyword = Prompts.PromptQuestion("Enter a new keyword");
                    break;

                case 5:
                    selectedTracker.AlertOnKeywordNotExist = Prompts.PromptYesNo("Alert when keyword doesn't exist?");
                    break;

                case 6:
                    selectedTracker.Enabled = Prompts.PromptYesNo("Do you want this watcher enabled?");
                    break;

                case 7:
                    Prompts.PromptWatcherAlertType(selectedTracker);
                    break;

                case 8:
                    ShowWatcherProperties(selectedTracker);
                    break;

                case 9:
                    removeWatcher = Prompts.PromptYesNo("Are you sure you want to delete this watcher?");
                    menuClose     = true;
                    break;

                default:
                    Log.Information("Answer entered wasn't a valid presented option");
                    Console.WriteLine("Answer entered isn't one of the options, please press enter and try again");
                    Console.ReadLine();
                    break;
                }
                if (removeWatcher)
                {
                    selectedTracker.Delete();
                }
                else
                {
                    selectedTracker.Save();
                }
            }
            Log.Information("Exited Menu ModifySingleWatcher");
        }
Beispiel #11
0
        internal static void ShowMenuRoot()
        {
            Log.Debug("Presenting Menu Root");
            while (!Constants.CloseApp)
            {
                try
                {
                    string   menuName    = "Main Menu";
                    string   description = "Enter the corresponding menu number for the action you want to perform:";
                    string[] menuChoices = new string[]
                    {
                        "Add Watcher",
                        "Modify Watcher",
                        "Test Watcher Alert",
                        "Test Keyword On Website",
                        "Open Directory",
                        "Settings",
                        "Close Bot"
                    };
                    int answer = Prompts.PromptMenu(menuName, menuChoices, description, true);
                    if (Constants.DebugMode && answer == 99)
                    {
                        Handler.TestAction();
                    }

                    switch (answer)
                    {
                    case 1:
                        ShowMenuAddWatcher();
                        break;

                    case 2:
                        ShowMenuModifyWatcher();
                        break;

                    case 3:
                        ShowMenuTestWatcherAlert();
                        break;

                    case 4:
                        ShowMenuTestKeywordOnWebpage();
                        break;

                    case 5:
                        ShowMenuOpenDirectory();
                        break;

                    case 6:
                        ShowMenuSettings();
                        break;

                    case 7:
                        Handler.CloseApp();
                        break;

                    default:
                        Log.Information("Answer entered wasn't a valid presented option");
                        Console.WriteLine("Answer entered isn't one of the options, please press enter and try again");
                        Console.ReadLine();
                        break;
                    }
                    Console.Clear();
                }
                catch (Exception ex)
                {
                    Log.Error(ex, $"Error: {ex.Message}");
                    Handler.NotifyError(ex);
                }
            }
            Log.Information("Exited menu root");
        }