예제 #1
0
        void ParseStringAndSetTrafficStats(string stringToParse)
        {
            // нахожу на странице поле общего трафика и достаю значение через группу
            Match parsMatchTotalTraffic = Regex.Match(stringToParse, regexTotalTraffic);
            if (!parsMatchTotalTraffic.Success)
            {
                MessageBox.Show("DEBUG.\n\nCan not find TotalTraffic");

                string debugString = "DEBUG.\n\nCan not find TotalTraffic" + "\nin" + stringToParse;
                string filePath = @AppDomain.CurrentDomain.BaseDirectory + @"log-" + DateTime.Now.Second + @".txt";
                File.WriteAllText(filePath, debugString);
            }

            // нахожу на странице поле трафика текущей сессии и достаю значение через группу
            Match parsMatchCurrentSession = Regex.Match(stringToParse, regexCurrentSession); //<td>Трафик МБ</td>.*?<strong>.*(?<currSessionT>\d{1,4})</strong>+?
            if (!parsMatchCurrentSession.Success)                                           //<strong>.*?(?<currSessionT>\d{1,4})\..*</strong>+?
            {
                MessageBox.Show("DEBUG.\n\nCan not find CurrentSession");
            }

            //нахожу на странице поле сальдо и достаю значение через группу
            Match parsMatchSaldo = Regex.Match(stringToParse, regexSaldo);
            if (!parsMatchSaldo.Success)
            {
                MessageBox.Show("DEBUG.\n\nCan not find Saldo");
            }

            //заполняю структуру статистики
            _trafficStatictic = new TrafficStatictic(parsMatchCurrentSession.Groups["currSessionT"].Value,
                                                    parsMatchTotalTraffic.Groups["AllT"].Value,
                                                    parsMatchSaldo.Groups["Saldo"].Value);
        }
예제 #2
0
        public async Task<TrafficStatictic> GetPageContentAsync()
        {
            //Event
            OnStatisticLoadingStart();

            HttpResponseMessage response;
            using (HttpClient httpClient = new HttpClient())
            {
                HttpContent content = new StringContent(_postData);

                //важная строка - без нее не проходит логин
                content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");

                response = await httpClient.PostAsync(URLLogin, content);
            }
            response.EnsureSuccessStatusCode();

            //проверка на правильность логина/пароля
            if (response.RequestMessage.RequestUri.AbsolutePath.Contains("statistic"))
            {
                var respContent = await response.Content.ReadAsStringAsync();
                respContent = respContent.Replace("\n", "");
                respContent = respContent.Replace("\r", "");
                respContent = respContent.Replace("\t", "");

                //Parsing
                ParseStringAndSetTrafficStats(respContent);

                //Event
                OnStatisticLoaded();

                return _trafficStatictic;
            }
            MessageBox.Show(Properties.Resources.WrongUserDataMessage);
            TrafficStatictic emptyTrafficStatictic = new TrafficStatictic("0000", "0000", "0000");

            //Event
            OnStatisticLoaded();

            return emptyTrafficStatictic;
        }