aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/LiveTv
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-03-12 11:51:48 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-03-12 11:51:48 -0400
commite62b663ae049548b5f2169a9fbf984f1fa539183 (patch)
tree797af872e4be8b3509c8afb6ffd96ea0e2e2888a /MediaBrowser.Server.Implementations/LiveTv
parent028a0a857ab6d7f42544e2ae3a3f79f5632844fc (diff)
remove more reliance on ActiveService
Diffstat (limited to 'MediaBrowser.Server.Implementations/LiveTv')
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs112
1 files changed, 32 insertions, 80 deletions
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index 14a2b08a76..ec5ac3caea 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -103,27 +103,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv
{
_services.AddRange(services);
- SetActiveService(GetConfiguration().ActiveService);
- }
-
- private void SetActiveService(string name)
- {
- var service = _services.FirstOrDefault(i => string.Equals(i.Name, name, StringComparison.OrdinalIgnoreCase)) ??
- _services.FirstOrDefault();
-
- SetActiveService(service);
- }
-
- private void SetActiveService(ILiveTvService service)
- {
- if (ActiveService != null)
- {
- ActiveService.DataSourceChanged -= service_DataSourceChanged;
- }
+ ActiveService = _services.FirstOrDefault();
- ActiveService = service;
-
- if (service != null)
+ foreach (var service in _services)
{
service.DataSourceChanged += service_DataSourceChanged;
}
@@ -324,13 +306,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv
public async Task<ILiveTvRecording> GetInternalRecording(string id, CancellationToken cancellationToken)
{
- var service = ActiveService;
-
- var recordings = await service.GetRecordingsAsync(cancellationToken).ConfigureAwait(false);
+ var result = await GetInternalRecordings(new RecordingQuery
+ {
+ Id = id
- var recording = recordings.FirstOrDefault(i => _tvDtoService.GetInternalRecordingId(service.Name, i.Id) == new Guid(id));
+ }, cancellationToken).ConfigureAwait(false);
- return await GetRecording(recording, service.Name, cancellationToken).ConfigureAwait(false);
+ return result.Items.FirstOrDefault() as ILiveTvRecording;
}
private readonly SemaphoreSlim _liveStreamSemaphore = new SemaphoreSlim(1, 1);
@@ -345,29 +327,38 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return await GetLiveStream(id, true, cancellationToken).ConfigureAwait(false);
}
+ private ILiveTvService GetService(ILiveTvItem item)
+ {
+ return GetService(item.ServiceName);
+ }
+
+ private ILiveTvService GetService(string name)
+ {
+ return _services.FirstOrDefault(i => string.Equals(i.Name, name, StringComparison.OrdinalIgnoreCase));
+ }
+
private async Task<ChannelMediaInfo> GetLiveStream(string id, bool isChannel, CancellationToken cancellationToken)
{
await _liveStreamSemaphore.WaitAsync(cancellationToken).ConfigureAwait(false);
try
{
- var service = ActiveService;
ChannelMediaInfo info;
if (isChannel)
{
var channel = GetInternalChannel(id);
+ var service = GetService(channel);
_logger.Info("Opening channel stream from {0}, external channel Id: {1}", service.Name, channel.ExternalId);
-
info = await service.GetChannelStream(channel.ExternalId, cancellationToken).ConfigureAwait(false);
}
else
{
- var recordings = await service.GetRecordingsAsync(cancellationToken).ConfigureAwait(false);
- var recording = recordings.First(i => _tvDtoService.GetInternalRecordingId(service.Name, i.Id) == new Guid(id));
+ var recording = await GetInternalRecording(id, cancellationToken).ConfigureAwait(false);
+ var service = GetService(recording);
- _logger.Info("Opening recording stream from {0}, external recording Id: {1}", service.Name, recording.Id);
- info = await service.GetRecordingStream(recording.Id, cancellationToken).ConfigureAwait(false);
+ _logger.Info("Opening recording stream from {0}, external recording Id: {1}", service.Name, recording.RecordingInfo.Id);
+ info = await service.GetRecordingStream(recording.RecordingInfo.Id, cancellationToken).ConfigureAwait(false);
}
_logger.Info("Live stream info: {0}", _jsonSerializer.SerializeToString(info));
@@ -668,13 +659,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv
if (query.ChannelIdList.Length > 0)
{
var guids = query.ChannelIdList.Select(i => new Guid(i)).ToList();
- var serviceName = ActiveService.Name;
programs = programs.Where(i =>
{
var programChannelId = i.ExternalChannelId;
- var internalProgramChannelId = _tvDtoService.GetInternalChannelId(serviceName, programChannelId);
+ var service = GetService(i);
+ var internalProgramChannelId = _tvDtoService.GetInternalChannelId(service.Name, programChannelId);
return guids.Contains(internalProgramChannelId);
});
@@ -1030,14 +1021,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv
private async Task DeleteOldPrograms(List<Guid> currentIdList, IProgress<double> progress, CancellationToken cancellationToken)
{
- var service = ActiveService;
-
- if (service == null)
- {
- progress.Report(100);
- return;
- }
-
var list = _itemRepo.GetItemsOfType(typeof(LiveTvProgram)).ToList();
var numComplete = 0;
@@ -1223,28 +1206,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return Task.WhenAll(tasks);
}
- private IEnumerable<ILiveTvService> GetServices(string serviceName, string channelId)
- {
- IEnumerable<ILiveTvService> services = _services;
-
- if (string.IsNullOrEmpty(serviceName) && !string.IsNullOrEmpty(channelId))
- {
- var channel = GetInternalChannel(channelId);
-
- if (channel != null)
- {
- serviceName = channel.ServiceName;
- }
- }
-
- if (!string.IsNullOrEmpty(serviceName))
- {
- services = services.Where(i => string.Equals(i.Name, serviceName, StringComparison.OrdinalIgnoreCase));
- }
-
- return services;
- }
-
public async Task<QueryResult<TimerInfoDto>> GetTimers(TimerQuery query, CancellationToken cancellationToken)
{
var service = ActiveService;
@@ -1299,8 +1260,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
throw new ResourceNotFoundException(string.Format("Recording with Id {0} not found", recordingId));
}
- var service = GetServices(recording.ServiceName, null)
- .First();
+ var service = GetService(recording.ServiceName);
await service.DeleteRecordingAsync(recording.ExternalId, CancellationToken.None).ConfigureAwait(false);
}
@@ -1314,8 +1274,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
throw new ResourceNotFoundException(string.Format("Timer with Id {0} not found", id));
}
- var service = GetServices(timer.ServiceName, null)
- .First();
+ var service = GetService(timer.ServiceName);
await service.CancelTimerAsync(timer.ExternalId, CancellationToken.None).ConfigureAwait(false);
}
@@ -1329,8 +1288,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
throw new ResourceNotFoundException(string.Format("Timer with Id {0} not found", id));
}
- var service = GetServices(timer.ServiceName, null)
- .First();
+ var service = GetService(timer.ServiceName);
await service.CancelSeriesTimerAsync(timer.ExternalId, CancellationToken.None).ConfigureAwait(false);
}
@@ -1518,7 +1476,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
public async Task CreateTimer(TimerInfoDto timer, CancellationToken cancellationToken)
{
- var service = string.IsNullOrEmpty(timer.ServiceName) ? ActiveService : GetServices(timer.ServiceName, null).First();
+ var service = GetService(timer.ServiceName);
var info = await _tvDtoService.GetTimerInfo(timer, true, this, cancellationToken).ConfigureAwait(false);
@@ -1531,7 +1489,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
public async Task CreateSeriesTimer(SeriesTimerInfoDto timer, CancellationToken cancellationToken)
{
- var service = string.IsNullOrEmpty(timer.ServiceName) ? ActiveService : GetServices(timer.ServiceName, null).First();
+ var service = GetService(timer.ServiceName);
var info = await _tvDtoService.GetSeriesTimerInfo(timer, true, this, cancellationToken).ConfigureAwait(false);
@@ -1546,7 +1504,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
{
var info = await _tvDtoService.GetTimerInfo(timer, false, this, cancellationToken).ConfigureAwait(false);
- var service = string.IsNullOrEmpty(timer.ServiceName) ? ActiveService : GetServices(timer.ServiceName, null).First();
+ var service = GetService(timer.ServiceName);
await service.UpdateTimerAsync(info, cancellationToken).ConfigureAwait(false);
}
@@ -1555,7 +1513,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
{
var info = await _tvDtoService.GetSeriesTimerInfo(timer, false, this, cancellationToken).ConfigureAwait(false);
- var service = string.IsNullOrEmpty(timer.ServiceName) ? ActiveService : GetServices(timer.ServiceName, null).First();
+ var service = GetService(timer.ServiceName);
await service.UpdateSeriesTimerAsync(info, cancellationToken).ConfigureAwait(false);
}
@@ -1821,16 +1779,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv
var services = await GetServiceInfos(CancellationToken.None).ConfigureAwait(false);
var servicesList = services.ToList();
- var activeServiceInfo = ActiveService == null ? null :
- servicesList.FirstOrDefault(i => string.Equals(i.Name, ActiveService.Name, StringComparison.OrdinalIgnoreCase));
-
var info = new LiveTvInfo
{
Services = servicesList.ToList(),
- ActiveServiceName = activeServiceInfo == null ? null : activeServiceInfo.Name,
- IsEnabled = ActiveService != null,
- Status = activeServiceInfo == null ? LiveTvServiceStatus.Unavailable : activeServiceInfo.Status,
- StatusMessage = activeServiceInfo == null ? null : activeServiceInfo.StatusMessage
+ IsEnabled = servicesList.Count > 0
};
info.EnabledUsers = _userManager.Users