| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 | 
							- using MediaBrowser.Controller.LiveTv;
 
- using MediaBrowser.Model.LiveTv;
 
- using ServiceStack.ServiceHost;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Threading;
 
- using System.Threading.Tasks;
 
- namespace MediaBrowser.Api.LiveTv
 
- {
 
-     [Route("/LiveTv/Services", "GET")]
 
-     [Api(Description = "Gets available live tv services.")]
 
-     public class GetServices : IReturn<List<LiveTvServiceInfo>>
 
-     {
 
-     }
 
-     [Route("/LiveTv/Channels", "GET")]
 
-     [Api(Description = "Gets available live tv channels.")]
 
-     public class GetChannels : IReturn<List<ChannelInfoDto>>
 
-     {
 
-         // Add filter by service if needed, and/or other filters
 
-     }
 
-     [Route("/LiveTv/Recordings", "GET")]
 
-     [Api(Description = "Gets available live tv recordings.")]
 
-     public class GetRecordings : IReturn<List<RecordingInfo>>
 
-     {
 
-         // Add filter by service if needed, and/or other filters
 
-     }
 
-     [Route("/LiveTv/EPG", "GET")]
 
-     [Api(Description = "Gets available live tv epgs..")]
 
-     public class GetEpg : IReturn<List<EpgFullInfo>>
 
-     {
 
-         // Add filter by service if needed, and/or other filters
 
-     }
 
-     
 
-     public class LiveTvService : BaseApiService
 
-     {
 
-         private readonly ILiveTvManager _liveTvManager;
 
-         public LiveTvService(ILiveTvManager liveTvManager)
 
-         {
 
-             _liveTvManager = liveTvManager;
 
-         }
 
-         public object Get(GetServices request)
 
-         {
 
-             var services = _liveTvManager.Services;
 
-             var result = services.Select(GetServiceInfo)
 
-                 .ToList();
 
-             return ToOptimizedResult(result);
 
-         }
 
-         private LiveTvServiceInfo GetServiceInfo(ILiveTvService service)
 
-         {
 
-             return new LiveTvServiceInfo
 
-             {
 
-                 Name = service.Name
 
-             };
 
-         }
 
-         public object Get(GetChannels request)
 
-         {
 
-             var result = GetChannelsAsync(request).Result;
 
-             return ToOptimizedResult(result);
 
-         }
 
-         private async Task<IEnumerable<ChannelInfoDto>> GetChannelsAsync(GetChannels request)
 
-         {
 
-             var services = _liveTvManager.Services;
 
-             var tasks = services.Select(i => i.GetChannelsAsync(CancellationToken.None));
 
-             var channelLists = await Task.WhenAll(tasks).ConfigureAwait(false);
 
-             // Aggregate all channels from all services
 
-             return channelLists.SelectMany(i => i)
 
-                 .Select(_liveTvManager.GetChannelInfoDto);
 
-         }
 
-         public object Get(GetRecordings request)
 
-         {
 
-             var result = GetRecordingsAsync(request).Result;
 
-             return ToOptimizedResult(result);
 
-         }
 
-         private async Task<IEnumerable<RecordingInfo>> GetRecordingsAsync(GetRecordings request)
 
-         {
 
-             var services = _liveTvManager.Services;
 
-             var tasks = services.Select(i => i.GetRecordingsAsync(CancellationToken.None));
 
-             var recordings = await Task.WhenAll(tasks).ConfigureAwait(false);
 
-             return recordings.SelectMany(i => i).Select(_liveTvManager.GetRecordingInfo);
 
-         }
 
-         public object Get(GetEpg request)
 
-         {
 
-             var result = GetEpgAsync(request).Result;
 
-             return ToOptimizedResult(result);
 
-         }
 
-         private async Task<IEnumerable<EpgFullInfo>> GetEpgAsync(GetEpg request)
 
-         {
 
-             var services = _liveTvManager.Services;
 
-             var tasks = services.Select(i => i.GetEpgAsync(CancellationToken.None));
 
-             var epg = await Task.WhenAll(tasks).ConfigureAwait(false);
 
-             return epg.SelectMany(i => i);
 
-         }
 
-     }
 
- }
 
 
  |