Пример #1
0
        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.");
        }
Пример #2
0
        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);
        }