Example #1
0
        /// <summary>
        /// Load all playlists from the logged in user
        /// </summary>
        public ActionResult <List <YtPlaylist> > LoadPlaylists()
        {
            if (_lastRequestDates.TryGetValue(nameof(LoadPlaylists), out var requestTime))
            {
                if (requestTime > DateTime.Now.AddHours(-1))
                {
                    var data = _playlists.Values.Select(o => new YtPlaylist(o.Id, o.Snippet.Title)).ToList();
                    return(new ActionResult <List <YtPlaylist> >(ActionStatus.Success, data));
                }
            }

            if (_credential == null)
            {
                return(new ActionResult <List <YtPlaylist> >(ActionStatus.NotAuthorized, "Credentials missing"));
            }

            var service = CreateService();

            var playlistRequest = service.Playlists.List("id, snippet");

            playlistRequest.Mine       = true;
            playlistRequest.MaxResults = 50;
            var playlistResponse = playlistRequest.Execute();
            var list             = playlistResponse.Items.Select(o => new YtPlaylist(o.Id, o.Snippet.Title)).ToList();

            _playlists.AddUpdateOrRemove(playlistResponse.Items, o => o.Id);

            _lastRequestDates.AddOrUpdate(nameof(LoadPlaylists), DateTime.Now, (key, oldValue) => DateTime.Now);
            return(new ActionResult <List <YtPlaylist> >(ActionStatus.Success, list));
        }
Example #2
0
        /// <summary>
        /// Get all subscriptions from the logged in user
        /// </summary>
        public ActionResult <List <YtChannel> > GetSubscriptions()
        {
            if (_lastRequestDates.TryGetValue(nameof(GetSubscriptions), out var requestTime))
            {
                if (requestTime > DateTime.Now.AddHours(-1))
                {
                    var data = _subscriptions.Values.Select(o => new YtChannel {
                        Id = o.Snippet.ResourceId.ChannelId, Title = o.Snippet.Title
                    }).ToList();
                    return(new ActionResult <List <YtChannel> >(ActionStatus.Success, data));
                }
            }
            if (_credential == null)
            {
                return(new ActionResult <List <YtChannel> >(ActionStatus.NotAuthorized, "Credentials missing"));
            }
            var service = CreateService();
            var subscriptionsListRequest = service.Subscriptions.List("id, snippet");

            subscriptionsListRequest.Mine       = true;
            subscriptionsListRequest.MaxResults = 50;

            var subscriptions = new List <Subscription>();
            SubscriptionListResponse subscriptionListResponse = null;
            string pageToken;

            do
            {
                subscriptionListResponse = subscriptionsListRequest.Execute();
                if (subscriptionListResponse == null)
                {
                    return(new ActionResult <List <YtChannel> >(ActionStatus.Error, "Could not get subscriptions"));
                }
                pageToken = subscriptionListResponse?.NextPageToken;
                subscriptionsListRequest.PageToken = pageToken;
                subscriptions.AddRange(subscriptionListResponse.Items);
            }while (subscriptionListResponse.Items.Count > 0 && pageToken != null);
            var list = subscriptions.Select(o => new YtChannel {
                Id = o.Snippet.ResourceId.ChannelId, Title = o.Snippet.Title
            }).ToList();

            _subscriptions.AddUpdateOrRemove(subscriptionListResponse.Items, o => o.Id);
            _lastRequestDates.AddOrUpdate(nameof(GetSubscriptions), DateTime.Now, (key, oldValue) => DateTime.Now);

            return(new ActionResult <List <YtChannel> >(ActionStatus.Success, list));
        }