updated live tv methods + nuget

This commit is contained in:
Luke Pulverenti 2013-11-30 01:49:38 -05:00
parent f05ea5d20f
commit 45a4d25e26
11 changed files with 109 additions and 21 deletions

View File

@ -24,6 +24,11 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
/// </summary> /// </summary>
public class HttpClientManager : IHttpClient 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> /// <summary>
/// The _logger /// The _logger
/// </summary> /// </summary>
@ -122,13 +127,13 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
request.UserAgent = options.UserAgent; 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; var sp = request.ServicePoint;
if (_httpBehaviorPropertyInfo == null) if (_httpBehaviorPropertyInfo == null)
{ {
_httpBehaviorPropertyInfo = sp.GetType().GetProperty("HttpBehaviour", BindingFlags.Instance | BindingFlags.NonPublic); _httpBehaviorPropertyInfo = sp.GetType().GetProperty("HttpBehaviour", BindingFlags.Instance | BindingFlags.NonPublic);
} }
_httpBehaviorPropertyInfo.SetValue(sp, (byte)0, null); _httpBehaviorPropertyInfo.SetValue(sp, (byte)0, null);
return request; return request;
@ -150,7 +155,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
var client = GetHttpClient(GetHostFromUrl(options.Url), options.EnableHttpCompression); 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 }; 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); 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) if (options.ResourcePool != null)
{ {

View File

@ -69,6 +69,13 @@ namespace MediaBrowser.Controller.LiveTv
/// <returns>Task{IEnumerable{RecordingInfo}}.</returns> /// <returns>Task{IEnumerable{RecordingInfo}}.</returns>
Task<IEnumerable<TimerInfo>> GetTimersAsync(CancellationToken cancellationToken); 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> /// <summary>
/// Gets the programs asynchronous. /// Gets the programs asynchronous.
/// </summary> /// </summary>

View File

@ -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; }
}
}

View File

@ -10,6 +10,12 @@ namespace MediaBrowser.Controller.LiveTv
/// </summary> /// </summary>
public string Id { get; set; } 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> /// <summary>
/// ChannelId of the recording. /// ChannelId of the recording.
/// </summary> /// </summary>
@ -52,12 +58,6 @@ namespace MediaBrowser.Controller.LiveTv
/// <value>The status.</value> /// <value>The status.</value>
public RecordingStatus Status { get; set; } 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> /// <summary>
/// Gets or sets the pre padding seconds. /// Gets or sets the pre padding seconds.
/// </summary> /// </summary>

View File

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

View File

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

View File

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

View File

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

View File

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.Common.Internal</id> <id>MediaBrowser.Common.Internal</id>
<version>3.0.253</version> <version>3.0.254</version>
<title>MediaBrowser.Common.Internal</title> <title>MediaBrowser.Common.Internal</title>
<authors>Luke</authors> <authors>Luke</authors>
<owners>ebr,Luke,scottisafool</owners> <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> <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> <copyright>Copyright © Media Browser 2013</copyright>
<dependencies> <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="NLog" version="2.1.0" />
<dependency id="ServiceStack.Text" version="3.9.58" /> <dependency id="ServiceStack.Text" version="3.9.58" />
<dependency id="SimpleInjector" version="2.3.6" /> <dependency id="SimpleInjector" version="2.3.6" />

View File

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

View File

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