aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Api/LiveTv/LiveTvService.cs43
-rw-r--r--MediaBrowser.Controller/LiveTv/ChannelInfo.cs2
-rw-r--r--MediaBrowser.Controller/LiveTv/ILiveTvManager.cs3
-rw-r--r--MediaBrowser.Controller/LiveTv/ILiveTvService.cs3
-rw-r--r--MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj3
-rw-r--r--MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj3
-rw-r--r--MediaBrowser.Model/Dto/RecordingInfoDto.cs12
-rw-r--r--MediaBrowser.Model/LiveTv/ChannelInfoDto.cs2
-rw-r--r--MediaBrowser.Model/LiveTv/RecordingInfo.cs27
-rw-r--r--MediaBrowser.Model/MediaBrowser.Model.csproj1
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs3
-rw-r--r--MediaBrowser.ServerApplication/NextPvr/LiveTvService.cs66
-rw-r--r--MediaBrowser.sln3
13 files changed, 157 insertions, 14 deletions
diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs
index 579517aeb..f8e7b6370 100644
--- a/MediaBrowser.Api/LiveTv/LiveTvService.cs
+++ b/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);
}
}
}
diff --git a/MediaBrowser.Controller/LiveTv/ChannelInfo.cs b/MediaBrowser.Controller/LiveTv/ChannelInfo.cs
index 7ad1ec6c9..547fc6287 100644
--- a/MediaBrowser.Controller/LiveTv/ChannelInfo.cs
+++ b/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>
diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs
index de88d1562..62bfdf3e5 100644
--- a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs
+++ b/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
diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvService.cs b/MediaBrowser.Controller/LiveTv/ILiveTvService.cs
index 4d9ec8531..a1e002bc8 100644
--- a/MediaBrowser.Controller/LiveTv/ILiveTvService.cs
+++ b/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);
}
}
diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
index 0f54073ef..8a6197857 100644
--- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
+++ b/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>
diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
index 3d4b8d2c7..dfff0356b 100644
--- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
+++ b/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>
diff --git a/MediaBrowser.Model/Dto/RecordingInfoDto.cs b/MediaBrowser.Model/Dto/RecordingInfoDto.cs
new file mode 100644
index 000000000..4151c5a9c
--- /dev/null
+++ b/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
+ {
+ }
+}
diff --git a/MediaBrowser.Model/LiveTv/ChannelInfoDto.cs b/MediaBrowser.Model/LiveTv/ChannelInfoDto.cs
index c77d7ed12..15c905581 100644
--- a/MediaBrowser.Model/LiveTv/ChannelInfoDto.cs
+++ b/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>
diff --git a/MediaBrowser.Model/LiveTv/RecordingInfo.cs b/MediaBrowser.Model/LiveTv/RecordingInfo.cs
new file mode 100644
index 000000000..dab37a381
--- /dev/null
+++ b/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; }
+ }
+}
diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj
index b048dc1c3..fc3b270f6 100644
--- a/MediaBrowser.Model/MediaBrowser.Model.csproj
+++ b/MediaBrowser.Model/MediaBrowser.Model.csproj
@@ -74,6 +74,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" />
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index 34be46d72..20beb551d 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/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
};
}
}
diff --git a/MediaBrowser.ServerApplication/NextPvr/LiveTvService.cs b/MediaBrowser.ServerApplication/NextPvr/LiveTvService.cs
new file mode 100644
index 000000000..ab72b2c8e
--- /dev/null
+++ b/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"; }
+ }
+ }
+}
diff --git a/MediaBrowser.sln b/MediaBrowser.sln
index 0c5360b49..744debbcd 100644
--- a/MediaBrowser.sln
+++ b/MediaBrowser.sln
@@ -237,7 +237,4 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
- GlobalSection(Performance) = preSolution
- HasPerformanceSessions = true
- EndGlobalSection
EndGlobal