Sven Van den brande пре 11 година
родитељ
комит
28ab28768a

+ 34 - 9
MediaBrowser.Api/LiveTv/LiveTvService.cs

@@ -20,6 +20,13 @@ namespace MediaBrowser.Api.LiveTv
     {
         // 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
+    }
     
     public class LiveTvService : BaseApiService
     {
@@ -40,6 +47,14 @@ namespace MediaBrowser.Api.LiveTv
             return ToOptimizedResult(result);
         }
 
+        private LiveTvServiceInfo GetServiceInfo(ILiveTvService service)
+        {
+            return new LiveTvServiceInfo
+            {
+                Name = service.Name
+            };
+        }
+
         public object Get(GetChannels request)
         {
             var result = GetChannelsAsync(request).Result;
@@ -47,25 +62,35 @@ namespace MediaBrowser.Api.LiveTv
             return ToOptimizedResult(result);
         }
 
-        public async Task<IEnumerable<ChannelInfoDto>> GetChannelsAsync(GetChannels request)
+        private async Task<IEnumerable<ChannelInfoDto>> GetChannelsAsync(GetChannels request)
         {
             var services = _liveTvManager.Services;
 
-            var channelTasks = services.Select(i => i.GetChannelsAsync(CancellationToken.None));
+            var tasks = services.Select(i => i.GetChannelsAsync(CancellationToken.None));
 
-            var channelLists = await Task.WhenAll(channelTasks).ConfigureAwait(false);
+            var channelLists = await Task.WhenAll(tasks).ConfigureAwait(false);
 
             // Aggregate all channels from all services
             return channelLists.SelectMany(i => i)
                 .Select(_liveTvManager.GetChannelInfoDto);
         }
-        
-        private LiveTvServiceInfo GetServiceInfo(ILiveTvService service)
+
+        public object Get(GetRecordings request)
         {
-            return new LiveTvServiceInfo
-            {
-                Name = service.Name
-            };
+            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);
         }
     }
 }

+ 2 - 0
MediaBrowser.Controller/LiveTv/ChannelInfo.cs

@@ -13,6 +13,8 @@ namespace MediaBrowser.Controller.LiveTv
         /// <value>The name.</value>
         public string Name { get; set; }
 
+        public string Id { get; set; }
+
         /// <summary>
         /// Gets or sets the name of the service.
         /// </summary>

+ 2 - 1
MediaBrowser.Controller/LiveTv/ILiveTvManager.cs

@@ -1,4 +1,5 @@
-using MediaBrowser.Model.LiveTv;
+using System.Threading.Tasks;
+using MediaBrowser.Model.LiveTv;
 using System.Collections.Generic;
 
 namespace MediaBrowser.Controller.LiveTv

+ 3 - 0
MediaBrowser.Controller/LiveTv/ILiveTvService.cs

@@ -1,6 +1,7 @@
 using System.Collections.Generic;
 using System.Threading;
 using System.Threading.Tasks;
+using MediaBrowser.Model.LiveTv;
 
 namespace MediaBrowser.Controller.LiveTv
 {
@@ -21,5 +22,7 @@ namespace MediaBrowser.Controller.LiveTv
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <returns>Task{IEnumerable{ChannelInfo}}.</returns>
         Task<IEnumerable<ChannelInfo>> GetChannelsAsync(CancellationToken cancellationToken);
+
+        Task<IEnumerable<RecordingInfo>> GetRecordingsAsync(CancellationToken cancellationToken);
     }
 }

+ 3 - 0
MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj

@@ -233,6 +233,9 @@
     <Compile Include="..\MediaBrowser.Model\LiveTv\LiveTvServiceInfo.cs">
       <Link>LiveTv\LiveTvServiceInfo.cs</Link>
     </Compile>
+    <Compile Include="..\MediaBrowser.Model\LiveTv\RecordingInfo.cs">
+      <Link>LiveTv\RecordingInfo.cs</Link>
+    </Compile>
     <Compile Include="..\MediaBrowser.Model\Logging\ILogger.cs">
       <Link>Logging\ILogger.cs</Link>
     </Compile>

+ 3 - 0
MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj

@@ -220,6 +220,9 @@
     <Compile Include="..\MediaBrowser.Model\LiveTv\LiveTvServiceInfo.cs">
       <Link>LiveTv\LiveTvServiceInfo.cs</Link>
     </Compile>
+    <Compile Include="..\MediaBrowser.Model\LiveTv\RecordingInfo.cs">
+      <Link>LiveTv\RecordingInfo.cs</Link>
+    </Compile>
     <Compile Include="..\MediaBrowser.Model\Logging\ILogger.cs">
       <Link>Logging\ILogger.cs</Link>
     </Compile>

+ 12 - 0
MediaBrowser.Model/Dto/RecordingInfoDto.cs

@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MediaBrowser.Model.Dto
+{
+    public class RecordingInfoDto
+    {
+    }
+}

+ 2 - 0
MediaBrowser.Model/LiveTv/ChannelInfoDto.cs

@@ -12,6 +12,8 @@ namespace MediaBrowser.Model.LiveTv
         /// <value>The name.</value>
         public string Name { get; set; }
 
+        public string Id { get; set; }
+        
         /// <summary>
         /// Gets or sets the name of the service.
         /// </summary>

+ 27 - 0
MediaBrowser.Model/LiveTv/RecordingInfo.cs

@@ -0,0 +1,27 @@
+using System;
+
+namespace MediaBrowser.Model.LiveTv
+{
+    public class RecordingInfo
+    {
+        public string ChannelId { get; set; }
+
+        public string ChannelName { get; set; }
+
+        public string Id { get; set; }
+
+        public string Name { get; set; }
+
+        public string Description { get; set; }
+
+        /// <summary>
+        /// The start date of the recording, in UTC
+        /// </summary>
+        public DateTime StartDate { get; set; }
+
+        /// <summary>
+        /// The end date of the recording, in UTC
+        /// </summary>
+        public DateTime EndDate { get; set; }
+    }
+}

+ 1 - 0
MediaBrowser.Model/MediaBrowser.Model.csproj

@@ -73,6 +73,7 @@
     <Compile Include="LiveTv\ChannelInfoDto.cs" />
     <Compile Include="LiveTv\ChannelType.cs" />
     <Compile Include="LiveTv\LiveTvServiceInfo.cs" />
+    <Compile Include="LiveTv\RecordingInfo.cs" />
     <Compile Include="Net\WebSocketMessage.cs" />
     <Compile Include="Net\WebSocketMessageType.cs" />
     <Compile Include="Net\WebSocketState.cs" />

+ 2 - 1
MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs

@@ -39,7 +39,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv
             {
                 Name = info.Name,
                 ServiceName = info.ServiceName,
-                ChannelType = info.ChannelType
+                ChannelType = info.ChannelType,
+                Id = info.Id 
             };
         }
     }

+ 66 - 0
MediaBrowser.ServerApplication/NextPvr/LiveTvService.cs

@@ -0,0 +1,66 @@
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Net;
+using MediaBrowser.Controller.LiveTv;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using MediaBrowser.Model.Logging;
+using MediaBrowser.Model.Serialization;
+
+namespace MediaBrowser.Plugins.NextPvr
+{
+    /// <summary>
+    /// Class LiveTvService
+    /// </summary>
+    public class LiveTvService : ILiveTvService
+    {
+        private readonly ILogger _logger;
+
+        private IApplicationPaths _appPaths;
+        private IJsonSerializer _json;
+        private IHttpClient _httpClient;
+
+        public LiveTvService(ILogger logger)
+        {
+            _logger = logger;
+        }
+
+        /// <summary>
+        /// Gets the channels async.
+        /// </summary>
+        /// <param name="cancellationToken">The cancellation token.</param>
+        /// <returns>Task{IEnumerable{ChannelInfo}}.</returns>
+        public Task<IEnumerable<ChannelInfo>> GetChannelsAsync(CancellationToken cancellationToken)
+        {
+            //using (var stream = await _httpClient.Get(new HttpRequestOptions()
+            //    {
+            //          Url = "",
+            //          CancellationToken = cancellationToken
+            //    }))
+            //{
+                
+            //}
+            _logger.Info("GetChannelsAsync");
+
+            var channels = new List<ChannelInfo>
+                {
+                    new ChannelInfo
+                        {
+                             Name = "NBC",
+                              ServiceName = Name
+                        }
+                };
+
+            return Task.FromResult<IEnumerable<ChannelInfo>>(channels);
+        }
+
+        /// <summary>
+        /// Gets the name.
+        /// </summary>
+        /// <value>The name.</value>
+        public string Name
+        {
+            get { return "Next Pvr"; }
+        }
+    }
+}

+ 0 - 3
MediaBrowser.sln

@@ -237,7 +237,4 @@ Global
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 	EndGlobalSection
-	GlobalSection(Performance) = preSolution
-		HasPerformanceSessions = true
-	EndGlobalSection
 EndGlobal