public async Task SetYoutubeApiKeyAsync([Remainder] string key) { var config = Manager.Database.Load <YoutubeConfig>(YoutubeConfig.DocumentName()); if (config == null) { config = new YoutubeConfig(); config.ApiKey = key; } Manager.Database.Store(config, YoutubeConfig.DocumentName()); await ReplyAsync("Key set."); }
public async Task <SubscriptionStatus> IsSubscribedTo(string user, string subbedTo) { var config = Database.Load <YoutubeConfig>(YoutubeConfig.DocumentName()); if (config == null) { return(SubscriptionStatus.Unknown); } var parameters = $"?part=snippet%2CcontentDetails&forChannelId={subbedTo}&channelId={user}&key={config.ApiKey}"; var request = new HttpRequestMessage(HttpMethod.Get, $"https://www.googleapis.com/youtube/v3/subscriptions{parameters}"); var response = await HttpClient.SendAsync(request); if (!response.IsSuccessStatusCode) { return(SubscriptionStatus.Error); } var content = await response.Content.ReadAsStringAsync(); var token = JToken.Parse(content); var firstMatch = token.Value <JToken>("items").FirstOrDefault(); if (firstMatch == null) { return(SubscriptionStatus.NotSubscribed); } if (firstMatch.Value <JToken>("snippet").Value <JToken>("resourceId").Value <JToken>("channelId").ToString().Equals(subbedTo)) { return(SubscriptionStatus.Subscribed); } return(SubscriptionStatus.Unknown); }