Пример #1
0
        public async Task Send()
        {
            try
            {
                IList <SendingQuestion> questions = await _repository.GetQuestionForSend();

                Dictionary <long, List <SendingQuestion> > qs = questions
                                                                .GroupBy(x => x.QuestionId)
                                                                .ToDictionary(k => k.Key, v => questions.Where(x => x.QuestionId == v.Key).ToList());

                foreach (KeyValuePair <long, List <SendingQuestion> > pair in qs)
                {
                    Thread.Sleep(3500);
                    foreach (SendingQuestion q in pair.Value)
                    {
                        try
                        {
                            using (var client = new HttpClient())
                            {
                                var values = new Dictionary <string, string>
                                {
                                    { "type", "unicast" },                         //type - тип запроса. Может быть:self - самому себе, broadcast - вещание по каналу, unicast - отправка одному пользователю
                                    { "id", AppSettingConfig.PushallId },          //id - номер вашей подписки в случае с self - ваш айди
                                    { "key", AppSettingConfig.PushallKey },        //key - ключ вашей подписки, или ключ безопасности для отправки Push себе
                                    { "uid", q.PushAllUserId },                    //uid - ID пользователя
                                    { "title", q.ProviderDescription },            //title - заголовок Push-уведомления
                                    { "text", q.Title },                           //text - основной текст Push-уведомления
                                    { "url", q.Url },                              //url - адрес по которому будет осуществлен переход по клику (не обязательно)
                                    { "hidden", "0" },                             //hidden - 1 - сразу скрыть уведомление из истории пользователей, 2 - скрыть только из ленты, 0 - не скрывать (по-умолчанию 0)
                                    { "encode", "utf8" },                          //encode - ваша кодировка. (не обязательно) например cp1251
                                    { "priority", "0" },                           //priority - приоритет. 0 - по по-умолчанию. -1 - не важные, менее заметны. 1 - более заметные
                                };

                                var content = new FormUrlEncodedContent(values);

                                var response = await client.PostAsync("https://pushall.ru/api.php", content);

                                var responseString = await response.Content.ReadAsStringAsync();
                            }
                        }
                        catch (Exception ex)
                        {
                            _errorProvider.SendError(ex);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _errorProvider.SendError(ex);
            }
        }
Пример #2
0
        public async void Start(string[] args)
        {
            List <Question> questions = new List <Question>();

            while (true)
            {
                try
                {
                    questions.AddRange(await _stackoverflowParse.ParseList());
                    var resultQuestions = await _repository.AddQuestions(questions);

                    foreach (var q in resultQuestions)
                    {
                        q.Tags = questions.Single(x => x.Url == q.Url).Tags;
                    }

                    var tags = await _repository.UpdateTagsAndStatus(resultQuestions);

                    if (resultQuestions.Any())
                    {
                        await _pushAllProvider.Send();
                    }
                }
                catch (Exception ex)
                {
                    _errorProvider.SendError(ex);
                }
                finally
                {
                    questions.Clear();
                    Thread.Sleep(60 * 1000);
                }
            }
        }
        public async void Start(string[] args)
        {
            List <Question> questions = new List <Question>();

            while (true)
            {
                try
                {
                    questions.AddRange(await _tosterParse.ParseList());
                    var resultQuestions = await _repository.AddQuestions(questions);

                    await _tosterParse.ParseTags(resultQuestions);

                    var tags = await _repository.UpdateTagsAndStatus(resultQuestions);

                    if (tags.Any())
                    {
                        Dictionary <string, string> tagUrls = new Dictionary <string, string>();

                        foreach (var pair in resultQuestions.Where(x => x.TagUrls != null).SelectMany(x => x.TagUrls))
                        {
                            if (!tagUrls.ContainsKey(pair.Key))
                            {
                                tagUrls[pair.Key] = pair.Value;
                            }
                        }

                        foreach (var tag in tags)
                        {
                            tag.Url = tagUrls[tag.Name];
                        }

                        await _tosterParse.ParseTagImage(tags);

                        await _repository.UpdateTagImage(tags);
                    }

                    if (resultQuestions.Any())
                    {
                        await _pushAllProvider.Send();
                    }
                }
                catch (Exception ex)
                {
                    _errorProvider.SendError(ex);
                }
                finally
                {
                    questions.Clear();
                    Thread.Sleep(60 * 1000);
                }
            }
        }