Sfoglia il codice sorgente

updated live tv methods + nuget

Luke Pulverenti 11 anni fa
parent
commit
45a4d25e26

+ 9 - 4
MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs

@@ -24,6 +24,11 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
     /// </summary>
     public class HttpClientManager : IHttpClient
     {
+        /// <summary>
+        /// When one request to a host times out, we'll ban all other requests for this period of time, to prevent scans from stalling
+        /// </summary>
+        private int TimeoutSeconds = 30;
+
         /// <summary>
         /// The _logger
         /// </summary>
@@ -122,13 +127,13 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
                 request.UserAgent = options.UserAgent;
             }
 
+            // This is a hack to prevent KeepAlive from getting disabled internally by the HttpWebRequest
+            // May need to remove this for mono
             var sp = request.ServicePoint;
-
             if (_httpBehaviorPropertyInfo == null)
             {
                 _httpBehaviorPropertyInfo = sp.GetType().GetProperty("HttpBehaviour", BindingFlags.Instance | BindingFlags.NonPublic);
             }
-
             _httpBehaviorPropertyInfo.SetValue(sp, (byte)0, null);
 
             return request;
@@ -150,7 +155,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
 
             var client = GetHttpClient(GetHostFromUrl(options.Url), options.EnableHttpCompression);
 
-            if ((DateTime.UtcNow - client.LastTimeout).TotalSeconds < 30)
+            if ((DateTime.UtcNow - client.LastTimeout).TotalSeconds < TimeoutSeconds)
             {
                 throw new HttpException(string.Format("Cancelling connection to {0} due to a previous timeout.", options.Url)) { IsTimedOut = true };
             }
@@ -162,7 +167,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
                 await options.ResourcePool.WaitAsync(options.CancellationToken).ConfigureAwait(false);
             }
 
-            if ((DateTime.UtcNow - client.LastTimeout).TotalSeconds < 30)
+            if ((DateTime.UtcNow - client.LastTimeout).TotalSeconds < TimeoutSeconds)
             {
                 if (options.ResourcePool != null)
                 {

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

@@ -68,6 +68,13 @@ namespace MediaBrowser.Controller.LiveTv
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <returns>Task{IEnumerable{RecordingInfo}}.</returns>
         Task<IEnumerable<TimerInfo>> GetTimersAsync(CancellationToken cancellationToken);
+
+        /// <summary>
+        /// Gets the recurring timers asynchronous.
+        /// </summary>
+        /// <param name="cancellationToken">The cancellation token.</param>
+        /// <returns>Task{IEnumerable{RecurringTimerInfo}}.</returns>
+        Task<IEnumerable<RecurringTimerInfo>> GetRecurringTimersAsync(CancellationToken cancellationToken);
         
         /// <summary>
         /// Gets the programs asynchronous.

+ 73 - 0
MediaBrowser.Controller/LiveTv/RecurringTimerInfo.cs

@@ -0,0 +1,73 @@
+using MediaBrowser.Model.LiveTv;
+using System;
+
+namespace MediaBrowser.Controller.LiveTv
+{
+    public class RecurringTimerInfo
+    {
+        /// <summary>
+        /// Id of the recording.
+        /// </summary>
+        public string Id { get; set; }
+
+        /// <summary>
+        /// ChannelId of the recording.
+        /// </summary>
+        public string ChannelId { get; set; }
+
+        /// <summary>
+        /// ChannelName of the recording.
+        /// </summary>
+        public string ChannelName { get; set; }
+
+        /// <summary>
+        /// Gets or sets the program identifier.
+        /// </summary>
+        /// <value>The program identifier.</value>
+        public string ProgramId { get; set; }
+
+        /// <summary>
+        /// Name of the recording.
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// Description of the recording.
+        /// </summary>
+        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; }
+
+        /// <summary>
+        /// Gets or sets the status.
+        /// </summary>
+        /// <value>The status.</value>
+        public RecordingStatus Status { get; set; }
+
+        /// <summary>
+        /// Gets or sets the pre padding seconds.
+        /// </summary>
+        /// <value>The pre padding seconds.</value>
+        public int PrePaddingSeconds { get; set; }
+
+        /// <summary>
+        /// Gets or sets the post padding seconds.
+        /// </summary>
+        /// <value>The post padding seconds.</value>
+        public int PostPaddingSeconds { get; set; }
+
+        /// <summary>
+        /// Gets or sets the type of the recurrence.
+        /// </summary>
+        /// <value>The type of the recurrence.</value>
+        public RecurrenceType RecurrenceType { get; set; }
+    }
+}

+ 6 - 6
MediaBrowser.Controller/LiveTv/TimerInfo.cs

@@ -10,6 +10,12 @@ namespace MediaBrowser.Controller.LiveTv
         /// </summary>
         public string Id { get; set; }
 
+        /// <summary>
+        /// Gets or sets the recurring timer identifier.
+        /// </summary>
+        /// <value>The recurring timer identifier.</value>
+        public string RecurringTimerId { get; set; }
+        
         /// <summary>
         /// ChannelId of the recording.
         /// </summary>
@@ -52,12 +58,6 @@ namespace MediaBrowser.Controller.LiveTv
         /// <value>The status.</value>
         public RecordingStatus Status { get; set; }
 
-        /// <summary>
-        /// Gets or sets a value indicating whether this instance is recurring.
-        /// </summary>
-        /// <value><c>true</c> if this instance is recurring; otherwise, <c>false</c>.</value>
-        public bool IsRecurring { get; set; }
-
         /// <summary>
         /// Gets or sets the pre padding seconds.
         /// </summary>

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

@@ -110,6 +110,7 @@
     <Compile Include="LiveTv\ILiveTvService.cs" />
     <Compile Include="LiveTv\ProgramInfo.cs" />
     <Compile Include="LiveTv\RecordingInfo.cs" />
+    <Compile Include="LiveTv\RecurringTimerInfo.cs" />
     <Compile Include="LiveTv\TimerInfo.cs" />
     <Compile Include="Localization\ILocalizationManager.cs" />
     <Compile Include="Notifications\INotificationsRepository.cs" />

+ 4 - 2
MediaBrowser.Model/LiveTv/RecordingStatus.cs

@@ -14,7 +14,9 @@ namespace MediaBrowser.Model.LiveTv
     public enum RecurrenceType
     {
         Manual,
-        NewProgramEvents,
-        AllProgramEvents
+        NewProgramEventsOneChannel,
+        AllProgramEventsOneChannel,
+        NewProgramEventsAllChannels,
+        AllProgramEventsAllChannels
     }
 }

+ 3 - 3
MediaBrowser.Model/LiveTv/TimerInfoDto.cs

@@ -58,10 +58,10 @@ namespace MediaBrowser.Model.LiveTv
         public RecordingStatus Status { get; set; }
 
         /// <summary>
-        /// Gets or sets a value indicating whether this instance is recurring.
+        /// Gets or sets the recurring timer identifier.
         /// </summary>
-        /// <value><c>true</c> if this instance is recurring; otherwise, <c>false</c>.</value>
-        public bool IsRecurring { get; set; }
+        /// <value>The recurring timer identifier.</value>
+        public string RecurringTimerId { get; set; }
 
         /// <summary>
         /// Gets or sets the pre padding seconds.

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

@@ -514,7 +514,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
                 ExternalId = info.Id,
                 ChannelId = GetInternalChannelId(service.Name, info.ChannelId, info.ChannelName).ToString("N"),
                 Status = info.Status,
-                IsRecurring = info.IsRecurring,
+                RecurringTimerId = info.RecurringTimerId,
                 PrePaddingSeconds = info.PrePaddingSeconds,
                 PostPaddingSeconds = info.PostPaddingSeconds
             };

+ 2 - 2
Nuget/MediaBrowser.Common.Internal.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Common.Internal</id>
-        <version>3.0.253</version>
+        <version>3.0.254</version>
         <title>MediaBrowser.Common.Internal</title>
         <authors>Luke</authors>
         <owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
         <description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description>
         <copyright>Copyright © Media Browser 2013</copyright>
         <dependencies>
-            <dependency id="MediaBrowser.Common" version="3.0.253" />
+            <dependency id="MediaBrowser.Common" version="3.0.254" />
             <dependency id="NLog" version="2.1.0" />
             <dependency id="ServiceStack.Text" version="3.9.58" />
             <dependency id="SimpleInjector" version="2.3.6" />

+ 1 - 1
Nuget/MediaBrowser.Common.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Common</id>
-        <version>3.0.253</version>
+        <version>3.0.254</version>
         <title>MediaBrowser.Common</title>
         <authors>Media Browser Team</authors>
         <owners>ebr,Luke,scottisafool</owners>

+ 2 - 2
Nuget/MediaBrowser.Server.Core.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Server.Core</id>
-        <version>3.0.253</version>
+        <version>3.0.254</version>
         <title>Media Browser.Server.Core</title>
         <authors>Media Browser Team</authors>
         <owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
         <description>Contains core components required to build plugins for Media Browser Server.</description>
         <copyright>Copyright © Media Browser 2013</copyright>
         <dependencies>
-            <dependency id="MediaBrowser.Common" version="3.0.253" />
+            <dependency id="MediaBrowser.Common" version="3.0.254" />
         </dependencies>
     </metadata>
     <files>