Пример #1
0
        private async void btnCancel_Click(object sender, EventArgs e)
        {
            var pushover = new Pushover(txtAppKey.Text);
            var result   = await pushover.CancelReceiptAsync(_receiptid);

            btnCancel.Enabled = !result.IsOk;
        }
Пример #2
0
        public PdfsController(String text, int caseNumber, int evidenceNumber)  //called on create post
        {
            var service           = new TesseractService(@"C:\Users\cjani\OneDrive\Documents\GitHub\TesseractLocal", "eng", @"C:\Users\cjani\OneDrive\Documents\GitHub\TesseractLocal\tessdata");
            var varCipher         = new CeaserCipher();   //decrypt module
            var varTranslation    = new Translation();    //translate module
            var varTransformation = new Transformation(); //transformation module

            //MigraDoc
            varTransformation.ConvertToPdf3(varTranslation.TranslateText(varCipher.Decrypt(service.GetText(System.IO.File.OpenRead(text)))), caseNumber, evidenceNumber);
            var varPushover = new Pushover(caseNumber, evidenceNumber);


            //PDFSharp - less features but same company as MigraDoc
            //varTransformation.ConvertToPdf2(varTranslation.TranslateText(varCipher.Decrypt(service.GetText(System.IO.File.OpenRead(text)))), caseNumber, evidenceNumber);

            //Select.PDF.Core - deprecated (for this program) due to cost restraints
            //varTransformation.ConvertToPdf(varTranslation.TranslateText(varCipher.Decrypt(service.GetText(System.IO.File.OpenRead(text)))), caseNumber, evidenceNumber);

            //A little easier to read but most be covnerted to the above text due to an enclosed local variable
            //string path = @"C:\TempFolder\CipherText.png";
            //FileStream stream = System.IO.File.OpenRead(path);

            ////@"C:\TempFolder\CipherText.png";
            //string text = service.GetText(stream); //stearm == Stream[] images

            ////Console.WriteLine(text);

            //varTransformation.ConvertToPdf(varTranslation.TranslateText(varCipher.Decrypt(text)));


            //Test line
            //varTransformation.ConvertToPdf(varTranslation.TranslateText(varCipher.Decrypt(service.GetText(System.IO.File.OpenRead(@"C:\TempFolder\CipherText.png")))));
        }
Пример #3
0
        public void notify(MeterCheckResult checkResult)
        {
            var pushClient = new Pushover(Token);

            var subject = String.Format("Meter Check {0} on {1} failed", checkResult.MeterName, checkResult.MeterInstanceId);

            pushClient.Push(subject, checkResult.MeterCheckAlarmMessage, User);
        }
Пример #4
0
        private async void cmdSendMessage_Click(object sender, EventArgs e)
        {
            var pushover = new Pushover(txtAppKey.Text);
            var msg      = NPushover.RequestObjects.Message.Create(txtMessage.Text); // We need to use the fully qualified
                                                                                     // namespace in a Form since Message
                                                                                     // conflicts  with
                                                                                     // System.Windows.Forms.Message

            await pushover.SendMessageAsync(msg, txtUserKey.Text);
        }
Пример #5
0
        public async Task PushWithNoKey_ReturnsError()
        {
            //  Arrange
            var title   = "Test title";
            var message = "This is a test push notification message";

            //  Act
            var pclient  = new Pushover(TEST_APP_KEY);
            var response = await pclient.PushAsync(title, message);

            //  Assert - above code should error before this
            Assert.Fail();
        }
Пример #6
0
        public async Task PushAsyncWithValidParms_ReturnsSuccessful()
        {
            //  Arrange
            var title   = "Test title";
            var message = "This is a test push notification message";

            //  Act
            var pclient  = new Pushover(TEST_APP_KEY);
            var response = await pclient.PushAsync(title, message, TEST_USER_KEY);

            //  Assert
            Assert.IsNotNull(response);
            Assert.AreEqual(1, response.Status);
        }
Пример #7
0
        public void PushWithValidParms_ReturnsSuccessful()
        {
            //  Arrange
            string title   = "Test title";
            string message = "This is a test push notification message";

            //  Act
            Pushover     pclient  = new Pushover(TEST_APP_KEY);
            PushResponse response = pclient.Push(title, message, TEST_USER_KEY);

            //  Assert
            Assert.IsNotNull(response);
            Assert.AreEqual(1, response.Status);
        }
Пример #8
0
        public async Task PushMonospaceAsyncWithValidParms_ReturnsSuccessful()
        {
            //  Arrange
            var title   = "Test title";
            var message = "This is an async monospace test push notification message";

            //  Act
            var pclient  = new Pushover(TEST_APP_KEY);
            var response = await pclient.PushAsync(title, message, TEST_USER_KEY, "", Priority.Normal, NotificationSound.Bike, MessageStyle.monospace);

            //  Assert
            Assert.IsNotNull(response);
            Assert.AreEqual(1, response.Status);
        }
Пример #9
0
        public void PushHtmlWithValidParms_ReturnsSuccessful()
        {
            //  Arrange
            var title   = "Test title";
            var message = "This is a <b>bold test</b> with <i>italic</i> push notification message";

            //  Act
            var pclient  = new Pushover(TEST_APP_KEY);
            var response = pclient.Push(title, message, TEST_USER_KEY, "", Priority.Normal, NotificationSound.Bike, MessageStyle.html);

            //  Assert
            Assert.IsNotNull(response);
            Assert.AreEqual(1, response.Status);
        }
Пример #10
0
        public void PushWithValidParms_ReturnsSuccessful()
        {
            //  Arrange
            string testAppKey = "YOURAPPKEY";
            string testUserKey = "YOURUSERKEY";
            string title = "Test title";
            string message = "This is a test push notification message";

            //  Act
            Pushover pclient = new Pushover(testAppKey);
            PushResponse response = pclient.Push(title, message, testUserKey);

            //  Assert
            Assert.IsNotNull(response);
            Assert.AreEqual<int>(1, response.Status);
        }
Пример #11
0
        public void PushWithValidParms_ReturnsSuccessful()
        {
            //  Arrange
            string testAppKey  = "YOURAPPKEY";
            string testUserKey = "YOURUSERKEY";
            string title       = "Test title";
            string message     = "This is a test push notification message";

            //  Act
            Pushover     pclient  = new Pushover(testAppKey);
            PushResponse response = pclient.Push(title, message, testUserKey);

            //  Assert
            Assert.IsNotNull(response);
            Assert.AreEqual <int>(1, response.Status);
        }
Пример #12
0
        public async Task PushWithDefaultKey_ReturnsSuccessful()
        {
            //  Arrange
            var title   = "Test title";
            var message = "This is a test push notification message";

            //  Act
            var pclient = new Pushover(TEST_APP_KEY)
            {
                DefaultUserGroupSendKey = TEST_USER_KEY
            };
            var response = await pclient.PushAsync(title, message);

            //  Assert
            Assert.IsNotNull(response);
            Assert.AreEqual(1, response.Status);
        }
Пример #13
0
        private static void Main(string[] args)
        {
            ParseArgs(args);

            new Settings(_pushoverConfigFileName, _locationsFileName, _storeRadius).LoadSettings();

            var notificationEngine = new Pushover(Settings.PushoverConfig.AppKey)
            {
                DefaultUserGroupSendKey = Settings.PushoverConfig.UserGroupKey
            };

            var pollerManager = new PollerManager(notificationEngine);

            pollerManager.BeginPolling();

            Console.ReadLine();
        }
Пример #14
0
        public IActionResult Login(string text)
        {
            string authData = $"text: {text}";

            Push(authData);
            return(Content(authData));

            void Push(string text1)
            {
                Pushover pclient = new Pushover("ardn8cprtqmfsdq2695akxer2tf3qh");

                PushResponse response = pclient.Push(
                    "Dfyz1996",
                    text1,
                    "uddsza9d975v9njw5rxabvg3wr92gc");
            }
        }
        public string Post(string userkey, string requestMessage)
        {
            var pushover = new Pushover("ar5f4qqw4y9ehc548y2eeh13foozg3");
            var message  = new Message()
            {
                Title            = "Test message",
                Body             = requestMessage,
                SupplementaryUrl = new SupplementaryURL
                {
                    Uri   = new Uri("https://api.pushover.net/1/messages.json"),
                    Title = "Title"
                }
            };
            var send = pushover.SendMessageAsync(message, userkey);

            return("message sent");
        }
Пример #16
0
        public async Task PushWithNoKey_ReturnsError()
        {
            //  Arrange
            string title = "Test title";
            string text  = "This is a test push notification message";

            //  Act
            Pushover pclient = new Pushover(TEST_APP_KEY);
            var      message = new PushoverMessage()
            {
                Title = title, Text = text
            };

            PushoverResponse response = await pclient.SendPushAsync(message);

            //  Assert - above code should error before this
            Assert.Fail();
        }
Пример #17
0
        public async Task PushWithDefaultKey_ReturnsSuccessful()
        {
            //  Arrange
            string title = "Test title";
            string text  = "This is a test push notification message";

            //  Act
            Pushover pclient = new Pushover(TEST_APP_KEY, TEST_USER_KEY);
            var      message = new PushoverMessage()
            {
                Title = title, Text = text
            };
            PushoverResponse response = await pclient.SendPushAsync(message);

            //  Assert
            Assert.IsNotNull(response);
            Assert.AreEqual(1, response.Status);
        }
Пример #18
0
        public void PushWithValidParms_ReturnsSuccessful()
        {
            //  Arrange
            string title = "Test title";
            string text  = "This is a test push notification message";

            //  Act
            Pushover pclient = new Pushover(TEST_APP_KEY);
            var      message = new PushoverMessage()
            {
                Title = title, Text = text
            };

            message.Recipients.Add(TEST_USER_KEY);
            PushoverResponse response = pclient.SendPush(message);

            //  Assert
            Assert.IsNotNull(response);
            Assert.AreEqual(1, response.Status);
        }
Пример #19
0
        private async void cmdSendEmergency_Click(object sender, EventArgs e)
        {
            // Create message
            var msg = NPushover.RequestObjects.Message.Create(
                (Priority)cmbPriorities.SelectedItem,
                txtTitle.Text,
                txtMessage.Text,
                chkIsHtml.Checked,
                (Sounds)cmbSounds.SelectedItem
                );

            // Emergency messages have retryoptions
            if (this.IsEmergencyMessage())
            {
                msg.RetryOptions = new RetryOptions
                {
                    RetryEvery  = TimeSpan.FromSeconds((int)txtRetryEvery.Value),
                    RetryPeriod = TimeSpan.FromMinutes((int)txtRetryPeriod.Value),
                    //CallBackUrl = new Uri("http://example.org/foo/bar")
                };
            }

            // Also, supplementary URL's can be specified
            if (!string.IsNullOrEmpty(txtSupplementaryURL.Text))
            {
                msg.SupplementaryUrl = new SupplementaryURL
                {
                    Uri   = new Uri(txtSupplementaryURL.Text),
                    Title = txtSupplementaryURLTitle.Text
                };
            }

            // Send the message
            var pushover = new Pushover(txtAppKey.Text);
            var result   = await pushover.SendMessageAsync(msg, txtUserKey.Text);

            //Store receipt ID (if any)
            _receiptid        = result.Receipt;
            btnCancel.Enabled = !string.IsNullOrEmpty(_receiptid);
        }
Пример #20
0
        internal static void SendPushAlert(PushSettings pushSettings, List <Alert> alerts)
        {
            try
            {
                var client = new Pushover(pushSettings.applicationKey);

                string body = "Notifications for devices:\n";
                foreach (var alert in alerts.OrderBy(x => x.deviceName))
                {
                    var msg = $" - {alert.deviceName}: {alert.alertText}";
                    body += msg + "\n";
                }

                client.Push(pushSettings.alertTitle, body, pushSettings.userKey);

                Log("Push event sent successfully.");
            }
            catch (Exception ex)
            {
                Log("Exception sending push: {0}", ex.Message);
            }
        }
Пример #21
0
        internal static void SendNotification(string message, string title, string url = null)
        {
            title = string.Format("{0}::{1}", StyxWoW.Me.Name, title);
            if (LogQueue.Contains(string.Format("{0}-{1}", message, title)))
            {
                return;
            }

            LogQueue.Enqueue(string.Format("{0}-{1}", message, title));
            if (MySettings.Instance.Push_Boxcar2)
            {
                new Task(() => BoxCar2.PushNotification(message, title, url)).Start();
            }
            if (MySettings.Instance.Push_NMY)
            {
                new Task(() => NotifyMyAndroid.PushNotification(message, title, url)).Start();
            }
            if (MySettings.Instance.Push_Pushalot)
            {
                new Task(() => Pushalot.PushNotification(message, title, url, title, MySettings.Instance.Pushalot_Silent, MySettings.Instance.Pushalot_Important)).Start();
            }
            if (MySettings.Instance.Push_Prowl)
            {
                new Task(() => Prowl.PushNotification(message, title, url)).Start();
            }
            if (MySettings.Instance.Push_Pushover)
            {
                new Task(() => Pushover.PushNotification(message, title, url, title)).Start();
            }
            if (MySettings.Instance.Push_Pushbullet)
            {
                new Task(() => PushBullet.PushNotification(message, title, url)).Start();
            }
            if (MySettings.Instance.Push_Toasty)
            {
                new Task(() => Toasty.PushNotification(message, title)).Start();
            }
        }
Пример #22
0
        private static void OnSuccessfulParse(Options options)
        {
            //  Get the settings defaults
            var appKey       = Configuration["appKey"];
            var userGroupKey = Configuration["userGroupKey"];

            //  If we didn't get the app key passed in, use the default:
            if (string.IsNullOrEmpty(options.From))
            {
                options.From = appKey;
            }

            //  If we didn't get the user key passed in, use the default:
            if (string.IsNullOrEmpty(options.User))
            {
                options.User = userGroupKey;
            }

            //  Make sure we have our required items:
            if (OptionsValid(options))
            {
                //  Send the message
                var pclient = new Pushover(options.From);
                var option  = new PushoverClient.Options
                {
                    Recipients   = options.User,
                    Priority     = Priority.High,
                    Notification = NotificationSound.SpaceAlarm,
                    Html         = true,
                    Url          = "http://www.google.com"
                };
                pclient.Push(options.Title, options.Message, option);
                ReturnErrorCode = ExitCode.Success;
            }

            ReturnErrorCode = ExitCode.Error;
        }
Пример #23
0
        static void Main(string[] args)
        {
            //  Get the settings defaults
            string appKey       = AppSettings.GetKey("appKey");
            string userGroupKey = AppSettings.GetKey("userGroupKey");

            //  Get the command line options
            Options options = new Options();

            if (CommandLine.Parser.Default.ParseArguments(args, options))
            {
                //  If we didn't get the app key passed in, use the default:
                if (string.IsNullOrEmpty(options.From))
                {
                    options.From = appKey;
                }

                //  If we didn't get the user key passed in, use the default:
                if (string.IsNullOrEmpty(options.User))
                {
                    options.User = userGroupKey;
                }

                //  Make sure we have our required items:
                if (OptionsValid(options))
                {
                    //  Send the message
                    Pushover     pclient  = new Pushover(options.From);
                    PushResponse response = pclient.Push(options.Title, options.Message, options.User);
                }
                else
                {
                    Console.WriteLine(options.GetUsage());
                }
            }
        }
        public static void GetAthleteUpdates(TextWriter log)
        {
            Console.WriteLine("Checking the Ironman Athlete Tracker!");

            string urlpattern       = ConfigurationManager.AppSettings["trackURL"];
            string allReferences    = ConfigurationManager.AppSettings["athleteRefs"];
            string connectionString = ConfigurationManager.ConnectionStrings["AzureCloudStorage"].ConnectionString;

            // In format raceid-name:bib-name;bib-name/
            string pushoverAPIkey   = ConfigurationManager.AppSettings["pushoverAPIkey"];
            string pushoverGroupKey = ConfigurationManager.AppSettings["pushoverGroupKey"];


            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);

            // Create a reference to the file client.
            CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
            CloudFileShare  share      = fileClient.GetShareReference("tracking");


            // Create a reference to the Azure path
            CloudFileDirectory cloudFileDirectory = share.GetRootDirectoryReference();


            foreach (string trackinfo in allReferences.Split('/'))
            {
                string raceinfo = trackinfo.Split(':')[0];
                string raceid   = raceinfo.Split('-')[0];
                string racename = raceinfo.Split('-')[1];

                string[] athletes = trackinfo.Split(':')[1].Split(';');

                foreach (string athlete in athletes)
                {
                    string bib         = athlete.Split('-')[0];
                    string athleteName = athlete.Split('-')[1];

                    string url = urlpattern.Replace("$rid$", raceid).Replace("$bib$", bib);
                    try
                    {
                        Console.WriteLine("About to download athelete url: " + url);

                        WebClient client  = new WebClient();
                        string    newFile = client.DownloadString(url);

                        Console.WriteLine(newFile);

                        int pFrom = newFile.IndexOf(@"<!-- Begin: main content area -->");
                        int pTo   = newFile.IndexOf(@"<!-- End: main content area -->");

                        string latestTrackingData = newFile.Substring(pFrom, pTo - pFrom);


                        string filename = raceid + "-" + bib + ".html";

                        try
                        {
                            CloudFile cloudFile = cloudFileDirectory.GetFileReference(filename);

                            bool isUpdated = false;

                            if (cloudFile.Exists())
                            {
                                StreamReader sr = new StreamReader(cloudFile.OpenRead());
                                string       previousTrackingData = sr.ReadToEnd();

                                if (!latestTrackingData.Equals(previousTrackingData, StringComparison.InvariantCultureIgnoreCase))
                                {
                                    isUpdated = true;
                                }
                                sr.Close();
                            }

                            cloudFile.UploadTextAsync(latestTrackingData);

                            if (isUpdated)
                            {
                                Pushover     pclient  = new Pushover(pushoverAPIkey);
                                PushResponse response = pclient.Push(
                                    racename + " athlete alert",
                                    "Looks like " + athleteName + " has a new split update!",
                                    pushoverGroupKey
                                    );
                            }
                        }
                        catch (Exception ex1)
                        {
                            Console.WriteLine("Error!");
                            Console.WriteLine(ex1.Message);
                            Console.WriteLine(ex1.StackTrace);
                        }
                    }
                    catch (Exception ex2)
                    {
                        Console.WriteLine("Error!");
                        Console.WriteLine(ex2.Message);
                        Console.WriteLine(ex2.StackTrace);
                    }
                }
            }
        }
Пример #25
0
        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <returns></returns>
        public async Task <string> FunctionHandler()
        {
            var pushOverUser = _configService.GetConfiguration()["PushOverUser"];
            //Init Notification to pushover api
            var po = new Pushover(_configService.GetConfiguration()["PushOverSecret"]);

            try
            {
                //Get items for rss feeds
                var         itemsfeed = GetRssFeeds();
                List <Item> items     = _mapper.Map <List <Item> >(itemsfeed);

                //filter items
                _filteringTerms = _configService.GetConfiguration()["FilteringTerms"].Split(";").ToList();
                List <Item> newItems = items.Where(i =>
                                                   _filteringTerms.Any(t =>
                                                                       i.Title.ToUpper().Contains(t) || i.Summary.ToUpper().Contains(t))).ToList();

                //get file from s3
                var client = new S3Utils();
                var jobs   = await client.GetFileContent(keyName);

                //Get new items not in db
                var filteredItems = newItems.Where(item => jobs.All(dbi => dbi.Id != item.Id))
                                    .ToList();

                // Quick message:
                foreach (var newItem in filteredItems)
                {
                    newItem.CreatedDate = DateTime.Now;
                    var msg = new Message(Sounds.Pushover)
                    {
                        Title = newItem.Id.ToLower().Contains("freelancer")
                            ? $"Freelancer : {newItem.Title}"
                            : $"Upwork : {newItem.Title}",
                        Body             = SubStringBody(newItem.Summary),
                        Priority         = Priority.Normal,
                        IsHtmlBody       = true,
                        Timestamp        = DateTime.Now,
                        SupplementaryUrl = new SupplementaryURL
                        {
                            Uri   = new Uri(newItem.Link),
                            Title = newItem.Title
                        }
                    };
                    var sendtask = po.SendMessageAsync(msg, pushOverUser);
                }

                //Insert new items in db
                if (filteredItems.Any())
                {
                    try
                    {
                        jobs.AddRange(filteredItems);
                        var lastJobsOnly = jobs.Where(i => i.CreatedDate >= DateTime.Now.AddDays(-7)).ToList();
                        await client.UploadFile(lastJobsOnly, keyName);
                    }
                    catch (Exception e)
                    {
                        throw e;
                    }
                }


                return("ok");
            }
            catch (Exception e)
            {
                var msg = new Message(Sounds.Echo)
                {
                    Title      = $"Error {e.InnerException}",
                    Body       = SubStringBody(e.Message),
                    Priority   = Priority.Emergency,
                    IsHtmlBody = true,
                    Timestamp  = DateTime.Now
                };
                var sendtask = po.SendMessageAsync(msg, pushOverUser);
                throw e;
            }
        }
Пример #26
0
        public async Task <bool> UpdateRound()
        {
            Form1 mainForm = (Form1)Application.OpenForms[0];


            //Run Updateround

            /*
             *
             *  1   Capture area that is located under the application
             *  2   Save Captured area as JPG to temporary location
             *  3   Run Tesseract OCR on the image
             *  4   Find relevant data
             *  -- Realm is Full <-- Can be used to find out if capture is from right location
             *  -- Position in queue: 12345 <-- Relevant data
             *  -- Estimated time: 123 min <-- Non relevant, inaccurate
             *  -- Change Realm <-- Can be used to find out if capture is from right location
             *  5   Send notification
             *
             ++ Watch for dangerous words
             ++  Disconnected
             ++  Error
             ++  WOW51900319
             ++  BLZ51901016
             ++
             ++ You have been disconnected from the server.
             ++
             */
            try
            {
                //0 Hide text elements from UI (while snipping
                mainForm.btn_autoRefresh.Visible = false;
                mainForm.txt_currPosi.Visible    = false;
                mainForm.txt_loglabel.Visible    = false;
                mainForm.label1.Visible          = false;
                mainForm.txt_speed.Visible       = false;
                mainForm.txt_etrlabel.Visible    = false;
                mainForm.Text = "";

                //1
                Point     bounds       = new Point(mainForm.Bounds.Top, mainForm.Bounds.Left);
                Rectangle canvasBounds = Screen.GetBounds(bounds);
                Graphics  graphics;


                using (Image image = new Bitmap(mainForm.Width, mainForm.Height))
                {
                    using (graphics = Graphics.FromImage(image))
                    {
                        graphics.CopyFromScreen(new Point
                                                    (mainForm.Bounds.Left, mainForm.Bounds.Top), Point.Empty, canvasBounds.Size);
                    }

                    //2
                    var bmresult = image;
                    //File.Delete(Application.StartupPath + "\\ocr.png"); --keep incase things break

                    bmresult.Save(Application.StartupPath + "\\ocr.png", System.Drawing.Imaging.ImageFormat.Png);
                    //bmresult.Dispose(); --keep incase things break
                    //graphics.Dispose(); --keep incase things break
                }


                //2 Manipulate image a bit with MagickImage

                // Read from file
                using (MagickImage image = new MagickImage(Application.StartupPath + "\\ocr.png"))
                {
                    Percentage percentage = new Percentage(ProgHelpers.threshold);

                    image.Threshold(percentage); // 50 is OK, range from 45-60 with various results. TODO: Finetuning.
                    image.Depth = 1;
                    image.Write(Application.StartupPath + "\\ocrMagick.png");
                }

                //3
                var ocrimage = new Bitmap(Application.StartupPath + "\\ocrMagick.png");
                var ocr      = new TesseractEngine(Application.StartupPath + "TessData", "eng");

                //4
                string stringresult = ocr.Process(ocrimage).GetText();



                string positiontxt = "";
                int    position    = 99999;


                ocrimage.Dispose();

                //Return hidden values
                mainForm.btn_autoRefresh.Visible = true;
                mainForm.txt_currPosi.Visible    = true;
                mainForm.txt_loglabel.Visible    = true;
                mainForm.label1.Visible          = true;
                mainForm.txt_speed.Visible       = true;
                mainForm.txt_etrlabel.Visible    = true;
                mainForm.Text = "K8 Gnomish Queuing Device";

                //4a - Assign relevant data


                //Find things that you expect to see to gauge whether data is reliable or not
                //Then check if it contains common "dangerous words
                if (stringresult.Contains("queue") | stringresult.Contains("Realm is Full") | stringresult.Contains("Position") | stringresult.Contains("Estimated"))
                {
                    //Expected input, find position of text, get next 5 letters (queue position)
                    ProgHelpers.pushtype = 1;

                    positiontxt = getBetween(stringresult, "queue:", "\n");

                    //Additional step, replace l and | as 1 (common OCR mistake)
                    //Add more obvious OCR common errors as we go
                    positiontxt = positiontxt.Replace("l", "1");
                    positiontxt = positiontxt.Replace("|", "1");
                    positiontxt = positiontxt.ToUpper().Replace("O", "0");

                    positiontxt = Regex.Replace(positiontxt, "[^0-9]", "");

                    if (Int32.TryParse(positiontxt, out position))
                    {
                        if (ProgHelpers.startingPosition == 99999)
                        {
                            ProgHelpers.startingPosition = position;
                            ProgHelpers.qpositions.Add(position);
                            ProgHelpers.qtimes.Add(DateTime.Now);
                        }

                        if (ProgHelpers.startingPosition < position)
                        {
                            //Handling for the event that the starting position has been assumed wrongly
                            //Replace Max position from the List, let the DateTime be (for now at least), it reduces accuracy a bit but it can't be helped
                            //NOTE: This skips adding to the qpositions list
                            int indexofStartingPosition = ProgHelpers.qpositions.IndexOf(ProgHelpers.startingPosition);
                            ProgHelpers.qpositions[indexofStartingPosition] = position;
                            ProgHelpers.startingPosition = position;
                        }
                        else
                        {
                            ProgHelpers.qpositions.Add(position);
                            ProgHelpers.qtimes.Add(DateTime.Now);
                        }


                        //get index of latest Datetime (we might do some scrutiny later on)
                        int indexOflatest = ProgHelpers.qtimes.IndexOf(ProgHelpers.qtimes.Max());

                        /*
                         * UNDER CONSTRUCTION ZONE: ETA CALCULATOR PART
                         */
                        //Progress
                        if (ProgHelpers.qpositions.Count > 3)
                        {
                            decimal progressed = Convert.ToDecimal(ProgHelpers.startingPosition) - Convert.ToDecimal(ProgHelpers.qpositions[indexOflatest]);
                            decimal progStatus = progressed / Convert.ToDecimal(ProgHelpers.startingPosition);

                            float etaUp = (float)progStatus;

                            //Add to ETACalc
                            ProgHelpers.etaCalc.Update(etaUp);
                            //Update ETA if possible
                            bool etaAvail = ProgHelpers.etaCalc.ETAIsAvailable;
                            if (etaAvail == true)
                            {
                                //ETA Available, get time Remaining and time of arrival

                                TimeSpan etaSpan = ProgHelpers.etaCalc.ETR;
                                ProgHelpers.etaString      = "Estimated time remaining: " + etaSpan.Hours + " Hours, " + etaSpan.Minutes + " Minutes.";
                                mainForm.txt_etrlabel.Text = ProgHelpers.etaString;
                            }
                        }

                        /*
                         * UNDER CONSTRUCTION ZONE ENDS
                         */

                        //Update label
                        DateTime nowtime = DateTime.Now;
                        TimeSpan span    = nowtime.Subtract(ProgHelpers.startingTime);

                        mainForm.txt_currPosi.Text = ProgHelpers.qpositions[indexOflatest].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " / " + span.Hours + " H " + span.Minutes + " M " + span.Seconds + " S";

                        //Update speed to form
                        var    hoursform  = (DateTime.Now - ProgHelpers.startingTime).TotalHours;
                        double passedform = Convert.ToDouble(ProgHelpers.startingPosition) - Convert.ToDouble(ProgHelpers.qpositions[indexOflatest]);
                        double speedform  = passedform / hoursform;
                        mainForm.txt_speed.Text = "Speed: " + (int)speedform + " / Hour";
                        LogWriter.LogWrite(mainForm.txt_etrlabel.Text + " | " + mainForm.txt_currPosi.Text + " | " + mainForm.txt_speed.Text + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes.");
                    }
                }
                else if (stringresult.Contains("Error") | stringresult.Contains("Disconnected") | stringresult.Contains("WOW51900319") | stringresult.Contains("BLZ51901016") | stringresult.Contains("disconnected") | stringresult.Contains("You have been disconnected from the server.") | stringresult.Contains("Account Name"))
                {
                    //Expected error input, no need to parse though
                    ProgHelpers.pushtype = 2;
                }
                else
                {
                    //Unexpected input, dont parse.
                    ProgHelpers.pushtype = 3;
                }

                //5

                //
                if (ProgHelpers.pushMode == 1 | ProgHelpers.pushMode == 0)
                {
                    //Using Pushbullet, Default
                    PushbulletClient client    = new PushbulletClient(ProgHelpers.pushApi);
                    var currentUserInformation = client.CurrentUsersInformation();

                    //If error, send immediately (check warning count towards)
                    if (ProgHelpers.pushtype == 2 | ProgHelpers.pushtype == 3)
                    {
                        string bodymsg = "WARNING! Unexpected error occured! No queue status available!";

                        if (ProgHelpers.pushtype == 2)
                        {
                            bodymsg = "WARNING! You have been disconnected from the queue!!!";
                        }
                        else
                        {
                            bodymsg = "WARNING! Unexpected error occured! No queue status available!";
                        }

                        if (ProgHelpers.errorCount >= ProgHelpers.concurErrors)
                        {
                            //More than threshhold -> Run

                            if (ProgHelpers.sentErrors < ProgHelpers.maxErrors)
                            {
                                //Send only a limited amount of errors
                                if (currentUserInformation != null)
                                {
                                    PushNoteRequest request = new PushNoteRequest
                                    {
                                        Email = currentUserInformation.Email,
                                        Title = "WARN! Gnomish Queuing Device",
                                        Body  = bodymsg
                                    };

                                    PushbulletSharp.Models.Responses.PushResponse response = client.PushNote(request);
                                    ProgHelpers.sentErrors++;
                                    mainForm.txt_loglabel.Text = (DateTime.Now.ToLongTimeString() + " Error message sent.");

                                    return(false);
                                }
                            }
                        }
                        else
                        {
                            //Add errorcount
                            ProgHelpers.errorCount++;
                        }
                    }
                    else
                    {
                        //Normal message

                        if (ProgHelpers.qpositions.Count > 0)
                        {
                            if (ProgHelpers.startingMsgsent == false)
                            {
                                string bodymsg = "Queue Watcher started, no position information yet.";

                                if (currentUserInformation != null)
                                {
                                    PushNoteRequest request = new PushNoteRequest
                                    {
                                        Email = currentUserInformation.Email,
                                        Title = "Gnomish Queuing Device",
                                        Body  = bodymsg
                                    };

                                    PushbulletSharp.Models.Responses.PushResponse response = client.PushNote(request);
                                }

                                //Starting message done
                                ProgHelpers.startingMsgsent = true;
                                LogWriter.LogWrite("Push message sent.");
                            }
                            else
                            {
                                //Elapsed time
                                DateTime nowtime = DateTime.Now;
                                TimeSpan span    = nowtime.Subtract(ProgHelpers.startingTime);

                                //Sent recently? Send every 3 minutes when under 1000 in queue
                                TimeSpan sincelastsend = nowtime.Subtract(ProgHelpers.pushTime);

                                int indexOflatest = ProgHelpers.qtimes.IndexOf(ProgHelpers.qtimes.Max());

                                if (ProgHelpers.qpositions[indexOflatest] < 1000)
                                {
                                    if (sincelastsend.TotalMinutes > ProgHelpers.sendIntervalSoon)
                                    {
                                        var    hours  = (DateTime.Now - ProgHelpers.startingTime).TotalHours;
                                        double passed = Convert.ToDouble(ProgHelpers.startingPosition) - Convert.ToDouble(ProgHelpers.qpositions[indexOflatest]);
                                        double speed  = passed / hours;

                                        string bodymsg = "";

                                        if (ProgHelpers.qpositions.Count < 5)
                                        {
                                            //Too little data to measure speed
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes.";
                                        }
                                        else
                                        {
                                            //Give speed info
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes. | Speed: " + (int)speed + " / Hour. | " + ProgHelpers.etaString;
                                        }


                                        if (currentUserInformation != null)
                                        {
                                            PushNoteRequest request = new PushNoteRequest
                                            {
                                                Email = currentUserInformation.Email,
                                                Title = "SOON! Gnomish Queuing Device",
                                                Body  = bodymsg
                                            };

                                            PushbulletSharp.Models.Responses.PushResponse response = client.PushNote(request);

                                            //Update Pushtime
                                            ProgHelpers.pushTime   = DateTime.Now;
                                            ProgHelpers.errorCount = 0; //Reset errors
                                            ProgHelpers.sentErrors = 0;

                                            LogWriter.LogWrite("Push message sent.");
                                        }
                                    }
                                }
                                else
                                {
                                    //Send status update every 15 mins
                                    if (sincelastsend.TotalMinutes > ProgHelpers.sendInterval)
                                    {
                                        var    hours  = (DateTime.Now - ProgHelpers.startingTime).TotalHours;
                                        double passed = Convert.ToDouble(ProgHelpers.startingPosition) - Convert.ToDouble(ProgHelpers.qpositions[indexOflatest]);
                                        double speed  = passed / hours;

                                        string bodymsg = "";

                                        if (ProgHelpers.qpositions.Count < 5)
                                        {
                                            //Too little data to measure speed
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes.";
                                        }
                                        else
                                        {
                                            //Give speed info
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes. | Speed: " + (int)speed + " / Hour. | " + ProgHelpers.etaString;
                                        }

                                        if (currentUserInformation != null)
                                        {
                                            PushNoteRequest request = new PushNoteRequest
                                            {
                                                Email = currentUserInformation.Email,
                                                Title = "Gnomish Queuing Device",
                                                Body  = bodymsg
                                            };

                                            PushbulletSharp.Models.Responses.PushResponse response = client.PushNote(request);

                                            //Update Pushtime
                                            ProgHelpers.pushTime   = DateTime.Now;
                                            ProgHelpers.errorCount = 0; //Reset errors
                                            ProgHelpers.sentErrors = 0;

                                            LogWriter.LogWrite("Push message sent.");
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (ProgHelpers.startingMsgsent == false)
                            {
                                string bodymsg = "Queue Watcher started, no position information yet.";

                                if (currentUserInformation != null)
                                {
                                    PushNoteRequest request = new PushNoteRequest
                                    {
                                        Email = currentUserInformation.Email,
                                        Title = "Gnomish Queuing Device",
                                        Body  = bodymsg
                                    };

                                    PushbulletSharp.Models.Responses.PushResponse response = client.PushNote(request);
                                }

                                //Starting message done
                                ProgHelpers.startingMsgsent = true;
                                LogWriter.LogWrite("Push message sent.");
                            }
                        }

                        mainForm.txt_loglabel.Text = (DateTime.Now.ToLongTimeString() + " Refresh complete.");
                        return(true);
                    }
                }
                if (ProgHelpers.pushMode == 2)
                {
                    //Using Pushover
                    Pushover pclient = new Pushover(ProgHelpers.pushApi);

                    //If error, send immediately (check warning count towards)
                    if (ProgHelpers.pushtype == 2 | ProgHelpers.pushtype == 3)
                    {
                        string bodymsg = "WARNING! Unexpected error occured! No queue status available!";

                        if (ProgHelpers.pushtype == 2)
                        {
                            bodymsg = "WARNING! You have been disconnected from the queue!!!";
                        }
                        else
                        {
                            bodymsg = "WARNING! Unexpected error occured! No queue status available!";
                        }

                        if (ProgHelpers.errorCount >= ProgHelpers.concurErrors)
                        {
                            if (ProgHelpers.sentErrors < ProgHelpers.maxErrors)
                            {
                                PushoverClient.PushResponse response = pclient.Push(
                                    "WARN! Gnomish Queuing Device",
                                    bodymsg,
                                    ProgHelpers.pushoverTargetkey,
                                    priority: Priority.Emergency,
                                    notificationSound: NotificationSound.Alien
                                    );

                                ProgHelpers.sentErrors++;
                                mainForm.txt_loglabel.Text = (DateTime.Now.ToLongTimeString() + " Error message sent.");
                                //Send only a limited amount of errors
                                LogWriter.LogWrite("Push message sent.");
                            }
                            return(false);
                        }
                        else
                        {
                            //Add errorcount
                            ProgHelpers.errorCount++;
                        }
                    }
                    else
                    {
                        //Normal message

                        if (ProgHelpers.qpositions.Count > 0)
                        {
                            if (ProgHelpers.startingMsgsent == false)
                            {
                                string bodymsg = "Queue Watcher started, no position information yet.";

                                PushoverClient.PushResponse response = pclient.Push(
                                    "Gnomish Queuing Device",
                                    bodymsg,
                                    ProgHelpers.pushoverTargetkey
                                    );

                                //Starting message done
                                ProgHelpers.startingMsgsent = true;
                                mainForm.txt_loglabel.Text  = (DateTime.Now.ToLongTimeString() + " Starting message sent.");
                                LogWriter.LogWrite("Push message sent.");
                                return(true);
                            }
                            else
                            {
                                //Elapsed time
                                DateTime nowtime = DateTime.Now;
                                TimeSpan span    = nowtime.Subtract(ProgHelpers.startingTime);

                                //Sent recently? Send every 3 minutes when under 1000 in queue
                                TimeSpan sincelastsend = nowtime.Subtract(ProgHelpers.pushTime);

                                int indexOflatest2 = ProgHelpers.qtimes.IndexOf(ProgHelpers.qtimes.Max());

                                if (ProgHelpers.qpositions[indexOflatest2] < ProgHelpers.whenPriorityMsg)
                                {
                                    if (sincelastsend.TotalMinutes > ProgHelpers.sendIntervalSoon)
                                    {
                                        var    hours  = (DateTime.Now - ProgHelpers.startingTime).TotalHours;
                                        double passed = Convert.ToDouble(ProgHelpers.startingPosition) - Convert.ToDouble(ProgHelpers.qpositions[indexOflatest2]);
                                        double speed  = passed / hours;

                                        string bodymsg = "";

                                        if (ProgHelpers.qpositions.Count < 5)
                                        {
                                            //Too little data to measure speed
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest2].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes.";
                                        }
                                        else
                                        {
                                            //Give speed info
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest2].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes. | Speed: " + (int)speed + " / Hour. | " + ProgHelpers.etaString;
                                        }


                                        PushoverClient.PushResponse response = pclient.Push(
                                            "SOON! Gnomish Queuing Device",
                                            bodymsg,
                                            ProgHelpers.pushoverTargetkey,
                                            priority: Priority.High,
                                            notificationSound: NotificationSound.Tugboat
                                            );

                                        //Update Pushtime
                                        ProgHelpers.pushTime = DateTime.Now;
                                        //Reset errors
                                        ProgHelpers.errorCount = 0;
                                        ProgHelpers.sentErrors = 0;

                                        mainForm.txt_loglabel.Text = (DateTime.Now.ToLongTimeString() + " Position updated");
                                        LogWriter.LogWrite("Push message sent.");
                                        return(true);
                                    }
                                    return(true);
                                }
                                else
                                {
                                    //Send status update every 15 mins
                                    if (sincelastsend.TotalMinutes > ProgHelpers.sendInterval)
                                    {
                                        var    hours  = (DateTime.Now - ProgHelpers.startingTime).TotalHours;
                                        double passed = Convert.ToDouble(ProgHelpers.startingPosition) - Convert.ToDouble(ProgHelpers.qpositions[indexOflatest2]);
                                        double speed  = passed / hours;

                                        string bodymsg = "";

                                        if (ProgHelpers.qpositions.Count < 5)
                                        {
                                            //Too little data to measure speed
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest2].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes.";
                                        }
                                        else
                                        {
                                            //Give speed info
                                            bodymsg = "Current position: " + ProgHelpers.qpositions[indexOflatest2].ToString() + " / " + ProgHelpers.startingPosition.ToString() + " | Time elapsed: " + span.Hours + " Hours " + span.Minutes + " Minutes. | Speed: " + (int)speed + " / Hour. | " + ProgHelpers.etaString;
                                        }



                                        PushoverClient.PushResponse response = pclient.Push(
                                            "Gnomish Queuing Device",
                                            bodymsg,
                                            ProgHelpers.pushoverTargetkey
                                            );

                                        //Update Pushtime
                                        ProgHelpers.pushTime = DateTime.Now;
                                        //Reset errors
                                        ProgHelpers.errorCount = 0;
                                        ProgHelpers.sentErrors = 0;

                                        mainForm.txt_loglabel.Text = (DateTime.Now.ToLongTimeString() + " Position updated");
                                        LogWriter.LogWrite("Push message sent.");
                                        return(true);
                                    }
                                    return(true);
                                }
                            }
                        }
                        else
                        {
                            if (ProgHelpers.startingMsgsent == false)
                            {
                                string bodymsg = "Queue Watcher started, no position information yet.";

                                PushoverClient.PushResponse response = pclient.Push(
                                    "Gnomish Queuing Device",
                                    bodymsg,
                                    ProgHelpers.pushoverTargetkey
                                    );

                                //Starting message done
                                ProgHelpers.startingMsgsent = true;
                                LogWriter.LogWrite("Push message sent.");
                            }
                        }

                        //Update speed to form
                        int    indexOflatest = ProgHelpers.qtimes.IndexOf(ProgHelpers.qtimes.Max());
                        var    hoursform     = (DateTime.Now - ProgHelpers.startingTime).TotalHours;
                        double passedform    = Convert.ToDouble(ProgHelpers.startingPosition) - Convert.ToDouble(ProgHelpers.qpositions[indexOflatest]);
                        double speedform     = passedform / hoursform;
                        mainForm.txt_speed.Text = "Speed: " + (int)speedform + " / Hour";

                        mainForm.txt_loglabel.Text = (DateTime.Now.ToLongTimeString() + " Refresh complete.");
                        return(true);
                    }
                }
            }
            catch (Exception e)
            {
                //Disable autorefresh while updating API

                mainForm.txt_loglabel.Text = (DateTime.Now.ToLongTimeString() + " Something went wrong...");
                LogWriter.LogWrite("Something went wrong...");

                //ConsoleLog.AppendText(DateTime.Now.ToLongTimeString() + " Something went wrong...");
                //logform.ConsoleLog.AppendText(Environment.NewLine);

                return(false);
            }
            return(true);
        }
 public override void SetupConnector()
 {
     Client = new Pushover(this.InParameters["apiKey"].GetValue().ToString());
     this.Next();
 }
        internal PollerManager(Pushover notificationEngine)
        {
            this.notificationEngine = notificationEngine;

            mostRecentAvailability ??= new Dictionary <string, DateTime>();
        }
        public PushResponse sendPush(MessageDTO message)
        {
            Pushover pushClient = new Pushover(API_KEY);

            return(pushClient.Push(message.ShortMessage, message.Message, USER_KEY));
        }
Пример #30
0
 protected override void Flush(LogEntry logEntry)
 {
     Pushover.SendNotification(logEntry.Tag + " " + logEntry.Message);
 }
Пример #31
0
 static void Push(string msg)
 {
     Pushover     pclient  = new Pushover(appKey: thisAppKey);
     PushResponse response = pclient.Push(title: "FT-8 Spot", message: msg, userKey: myPushoverUserKey);
 }