Пример #1
0
        public static Poster[] FindPosters(string pathToFolderOfPosterJsons)
        {
            var posters = new List <Poster>();

            string[] posterJsonPaths = Directory.GetFiles(pathToFolderOfPosterJsons, "*.json");

            foreach (string posterJsonPath in posterJsonPaths)
            {
                string posterName = Path.GetFileNameWithoutExtension(posterJsonPath);
                Poster poster     = null;
                if (posterName == "telegram")
                {
                    string  telegramPosterSettingsJson = File.ReadAllText(posterJsonPath);
                    JObject telegramPosterSettings     = JsonConvert.DeserializeObject <JObject>(telegramPosterSettingsJson);
                    string  accessToken = telegramPosterSettings.GetValue("accessToken").Value <string>();
                    long    chatId      = telegramPosterSettings.GetValue("chatId").Value <long>();
                    poster = new TelegramPoster(accessToken, chatId);
                    posters.Add(poster);
                }
                else if (posterName == "vk")
                {
                    string  posterSettingsJson = File.ReadAllText(posterJsonPath);
                    JObject posterSettings     = JsonConvert.DeserializeObject <JObject>(posterSettingsJson);
                    string  accessToken        = posterSettings.GetValue("accessToken").Value <string>();
                    string  clientSecret       = posterSettings.GetValue("clientSecret").Value <string>();
                    ulong   appId    = posterSettings.GetValue("appId").Value <ulong>();
                    string  login    = posterSettings.GetValue("login").Value <string>();
                    string  password = posterSettings.GetValue("password").Value <string>();
                    poster = new VkPoster(accessToken, appId, clientSecret, login, password);
                    posters.Add(poster);
                }
            }

            return(posters.Where(p => p != null).ToArray());
        }
Пример #2
0
        public async Task <IActionResult> PostTelegram(TelegramPoster poster)
        {
            User user = await _context.Users.FirstOrDefaultAsync(u => u.Name == User.Identity.Name);

            System.Console.WriteLine("Yes");
            await CreateBackgroudJob(user, poster);

            return(RedirectToAction("About", "Home"));
        }
Пример #3
0
        private async Task CreateBackgroudJob(User user, TelegramPoster poster)
        {
            var timeDelay  = TimeSpan.FromMinutes(0);
            int countItems = 0;

            foreach (var item in user.VkPostItems)
            {
                System.Console.WriteLine(item.Text);
                BackgroundJob.Schedule(() => poster.SendPost(item, user.UserSetting), timeDelay);
                timeDelay += TimeSpan.FromMinutes(user.UserSetting.Deley);
                countItems++;
            }
            await _context.DeletePostItemsAsync(user, countItems);

            await _context.SaveAsync();
        }