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()); }
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")); }
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(); }