public async Task <IActionResult> WebhookReceivedYT() { string body = new StreamReader(Request.Body).ReadToEnd(); var bodyStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(body)); var headers = Request.Headers; await Program.MopsLog(new LogMessage(LogSeverity.Verbose, "", $"Received a YT webhook message\n" + body)); try { var data = ConvertAtomToSyndication(bodyStream); MopsBot.Data.Tracker.YoutubeTracker tracker = StaticBase.Trackers[Data.Tracker.BaseTracker.TrackerType.Youtube].GetTrackers()[data.ChannelId] as MopsBot.Data.Tracker.YoutubeTracker; await tracker.CheckInfoAsync(data); } catch (Exception e) { await Program.MopsLog(new LogMessage(LogSeverity.Error, "", $" error by Youtube Webhook.", e)); } return(new OkResult()); }
public async Task <IActionResult> ReplyChallengeYT() { Dictionary <string, string[]> parameters = Request.Query.ToDictionary(x => x.Key, x => x.Value.ToArray()); if (parameters.ContainsKey("hub.challenge")) { await Program.MopsLog(new LogMessage(LogSeverity.Verbose, "", $"Received a YT challenge, containing {string.Join("\n", parameters.Select(x => x.Key + ": " + string.Join(", ", x.Value)))}")); var channel = parameters["hub.topic"].FirstOrDefault().Split("channel_id=").LastOrDefault(); if (!parameters["hub.mode"].FirstOrDefault().Contains("unsubscribe")) { MopsBot.Data.Tracker.YoutubeTracker tracker = StaticBase.Trackers[Data.Tracker.BaseTracker.TrackerType.Youtube].GetTrackers()[channel] as MopsBot.Data.Tracker.YoutubeTracker; tracker.WebhookExpire = DateTime.Now.AddDays(4); await tracker.UpdateTracker(); } return(new OkObjectResult(parameters["hub.challenge"].FirstOrDefault())); } else { return(new BadRequestResult()); } }