diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-10-09 03:18:43 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-10-09 03:18:43 -0400 |
| commit | daaae69df575f1d7692ba29d6f5ddd4c59516f82 (patch) | |
| tree | 24c818ece042d36808fd0a68834b2853bf4512e1 /MediaBrowser.Api/LiveTv/LiveTvService.cs | |
| parent | b3595eab6a94fda4f81f637007b2ac79e8a85065 (diff) | |
add playback of in-progress recordings
Diffstat (limited to 'MediaBrowser.Api/LiveTv/LiveTvService.cs')
| -rw-r--r-- | MediaBrowser.Api/LiveTv/LiveTvService.cs | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs index ebfced0f4..4217cd6ab 100644 --- a/MediaBrowser.Api/LiveTv/LiveTvService.cs +++ b/MediaBrowser.Api/LiveTv/LiveTvService.cs @@ -677,6 +677,12 @@ namespace MediaBrowser.Api.LiveTv public string Container { get; set; } } + [Route("/LiveTv/LiveRecordings/{Id}/stream", "GET", Summary = "Gets a live tv channel")] + public class GetLiveRecordingFile + { + public string Id { get; set; } + } + public class LiveTvService : BaseApiService { private readonly ILiveTvManager _liveTvManager; @@ -698,13 +704,32 @@ namespace MediaBrowser.Api.LiveTv _fileSystem = fileSystem; } + public async Task<object> Get(GetLiveRecordingFile request) + { + var path = EmbyTV.Current.GetActiveRecordingPath(request.Id); + + if (path == null) + { + throw new FileNotFoundException(); + } + + var outputHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); + + outputHeaders["Content-Type"] = Model.Net.MimeTypes.GetMimeType(path); + + var streamSource = new ProgressiveFileCopier(_fileSystem, path, outputHeaders, null, Logger, CancellationToken.None) + { + AllowEndOfFile = false + }; + return ResultFactory.GetAsyncStreamWriter(streamSource); + } + public async Task<object> Get(GetLiveStreamFile request) { var directStreamProvider = (await EmbyTV.Current.GetLiveStream(request.Id).ConfigureAwait(false)) as IDirectStreamProvider; var outputHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); - // TODO: Don't hardcode this - outputHeaders["Content-Type"] = Model.Net.MimeTypes.GetMimeType("file.ts"); + outputHeaders["Content-Type"] = Model.Net.MimeTypes.GetMimeType("file." + request.Container); var streamSource = new ProgressiveFileCopier(directStreamProvider, outputHeaders, null, Logger, CancellationToken.None) { |
