/// <summary> /// /// </summary> /// <param name="youtubeClient"></param> /// <param name="searchOptions"></param> /// <param name="slackClient"></param> /// <param name="log"></param> public Watcher(Slack.Client slackClient, Youtube.Client youtubeClient, IOptions <Youtube.SearchOptions> searchOptions, TraceWriter log) { _slackClient = slackClient ?? throw new ArgumentNullException(nameof(slackClient)); _youtubeClient = youtubeClient ?? throw new ArgumentNullException(nameof(youtubeClient)); _searchOptions = searchOptions ?? throw new ArgumentNullException(nameof(searchOptions)); _log = log ?? throw new ArgumentNullException(nameof(log)); }
public static void Run([TimerTrigger("0 0 * * * *")] TimerInfo myTimer, TraceWriter log) { try { // read options var slackOptions = new Slack.Options { WebhookUrl = ConfigurationManager.AppSettings["Slack:WebhookUrl"] }; var youTubeOptions = new Youtube.Options { ApiKey = ConfigurationManager.AppSettings["YouTube:ApiKey"], ApplicationName = ConfigurationManager.AppSettings["YouTube:ApplicationName"] }; var searchOptions = new Youtube.SearchOptions { Options = JsonConvert.DeserializeObject <List <Youtube.Option> >(ConfigurationManager.AppSettings["SearchOptions"]) }; // get last run date var lastRunDate = myTimer.ScheduleStatus.Last.ToUniversalTime(); log.Info($"lastRunDate: {lastRunDate:F}"); // create clients var youtubeClient = new Youtube.Client(new Microsoft.Extensions.Options.OptionsWrapper <Youtube.Options>(youTubeOptions)); var slackClient = new Slack.Client(new Microsoft.Extensions.Options.OptionsWrapper <Slack.Options>(slackOptions)); // run var watcher = new Watcher(slackClient, youtubeClient, new Microsoft.Extensions.Options.OptionsWrapper <Youtube.SearchOptions>(searchOptions), log); watcher.Process(lastRunDate); var response = slackClient.PostAsync(new Slack.Message { Text = $"Social Search Executed with published after {lastRunDate}" }).Result; } catch (Exception e) { log.Error($"Exception {e.Message}"); } }