public async Task<ChannelItemResult> GetAllMedia(InternalAllChannelMediaQuery query, CancellationToken cancellationToken) { if (query.ContentTypes.Length > 0 && !query.ContentTypes.Contains(ChannelMediaContentType.Podcast)) { return new ChannelItemResult(); } var tasks = Plugin.Instance.Configuration.Feeds.Select(async i => { try { return await GetChannelItemsInternal(i, cancellationToken).ConfigureAwait(false); } catch (Exception ex) { _notificationManager.SendNotification(new NotificationRequest { Description = "Error getting channel items" + ex, Date = DateTime.Now, Level = NotificationLevel.Error, SendToUserMode = SendToUserType.Admins }, cancellationToken); Plugin.Logger.ErrorException("Error getting channel items", ex); return new List<ChannelItemInfo>(); } }); var items = (await Task.WhenAll(tasks).ConfigureAwait(false)) .SelectMany(i => i); if (query.ContentTypes.Length > 0) { items = items.Where(i => query.ContentTypes.Contains(i.ContentType)); } var all = items.ToList(); return new ChannelItemResult { Items = all, TotalRecordCount = all.Count }; }
public Task<ChannelItemResult> GetAllMedia(InternalAllChannelMediaQuery query, CancellationToken cancellationToken) { return GetChannelItems(new InternalChannelItemQuery { UserId = query.UserId }, cancellationToken); }
public async Task<ChannelItemResult> GetAllMedia(InternalAllChannelMediaQuery query, CancellationToken cancellationToken) { var items = await GetAllItems(false, cancellationToken).ConfigureAwait(false); if (query.ContentTypes.Length > 0) { items = items.Where(i => query.ContentTypes.Contains(i.ContentType)); } if (query.ExtraTypes.Length > 0) { items = items.Where(i => query.ExtraTypes.Contains(i.ExtraType)); } if (query.TrailerTypes.Length > 0) { items = items.Where(i => i.TrailerTypes.Any(t => query.TrailerTypes.Contains(t))); } var list = items.ToList(); return new ChannelItemResult { Items = list, TotalRecordCount = list.Count }; }
public async Task<ChannelItemResult> GetAllMedia(InternalAllChannelMediaQuery query, CancellationToken cancellationToken) { var tasks = Plugin.Instance.Configuration.Feeds.Select(async i => { try { return await GetChannelItemsInternal(i, cancellationToken).ConfigureAwait(false); } catch (Exception ex) { Plugin.Logger.ErrorException("Error getting channel items", ex); return new List<ChannelItemInfo>(); } }); var items = await Task.WhenAll(tasks).ConfigureAwait(false); var all = items.SelectMany(i => i).ToList(); return new ChannelItemResult { Items = all, TotalRecordCount = all.Count }; }