aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-05-19 15:51:56 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-05-19 15:51:56 -0400
commitad3c30c14535780fcbd11b049603991e8d3cfe9e (patch)
tree78b02746ba417645141cc27b06675941d2bfd5e6
parentb98be6d7f1627b8031288e4e8785d5ab9072fb29 (diff)
support sending channel paging direct to the provider
-rw-r--r--MediaBrowser.Controller/Channels/ChannelAudioItem.cs3
-rw-r--r--MediaBrowser.Controller/Channels/ChannelItemInfo.cs1
-rw-r--r--MediaBrowser.Controller/Channels/ChannelItemResult.cs2
-rw-r--r--MediaBrowser.Controller/Channels/ChannelVideoItem.cs3
-rw-r--r--MediaBrowser.Controller/Channels/IChannel.cs1
-rw-r--r--MediaBrowser.Controller/Channels/IChannelManager.cs7
-rw-r--r--MediaBrowser.Controller/Channels/IChannelMediaItem.cs1
-rw-r--r--MediaBrowser.Controller/Channels/InternalChannelItemQuery.cs4
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj3
-rw-r--r--MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj9
-rw-r--r--MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj9
-rw-r--r--MediaBrowser.Model/Channels/ChannelInfo.cs (renamed from MediaBrowser.Controller/Channels/ChannelInfo.cs)7
-rw-r--r--MediaBrowser.Model/Channels/ChannelMediaContentType.cs (renamed from MediaBrowser.Controller/Channels/ChannelMediaContentType.cs)2
-rw-r--r--MediaBrowser.Model/Channels/ChannelMediaType.cs (renamed from MediaBrowser.Controller/Channels/ChannelMediaType.cs)2
-rw-r--r--MediaBrowser.Model/Dto/BaseItemDto.cs3
-rw-r--r--MediaBrowser.Model/MediaBrowser.Model.csproj3
-rw-r--r--MediaBrowser.Server.Implementations/Channels/ChannelManager.cs126
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs9
-rw-r--r--MediaBrowser.ServerApplication/ApplicationHost.cs2
-rw-r--r--Nuget/MediaBrowser.Common.Internal.nuspec4
-rw-r--r--Nuget/MediaBrowser.Common.nuspec2
-rw-r--r--Nuget/MediaBrowser.Server.Core.nuspec4
22 files changed, 142 insertions, 65 deletions
diff --git a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs
index 6d32f7d35..7072d4284 100644
--- a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs
+++ b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Controller.Entities.Audio;
+using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Entities;
using System.Collections.Generic;
@@ -11,7 +12,7 @@ namespace MediaBrowser.Controller.Channels
public string ExternalId { get; set; }
public string ChannelId { get; set; }
-
+
public ChannelItemType ChannelItemType { get; set; }
public bool IsInfiniteStream { get; set; }
diff --git a/MediaBrowser.Controller/Channels/ChannelItemInfo.cs b/MediaBrowser.Controller/Channels/ChannelItemInfo.cs
index 948754e49..66718d7cd 100644
--- a/MediaBrowser.Controller/Channels/ChannelItemInfo.cs
+++ b/MediaBrowser.Controller/Channels/ChannelItemInfo.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
diff --git a/MediaBrowser.Controller/Channels/ChannelItemResult.cs b/MediaBrowser.Controller/Channels/ChannelItemResult.cs
index c6d33996e..15f0a34a0 100644
--- a/MediaBrowser.Controller/Channels/ChannelItemResult.cs
+++ b/MediaBrowser.Controller/Channels/ChannelItemResult.cs
@@ -8,5 +8,7 @@ namespace MediaBrowser.Controller.Channels
public List<ChannelItemInfo> Items { get; set; }
public TimeSpan CacheLength { get; set; }
+
+ public int? TotalRecordCount { get; set; }
}
} \ No newline at end of file
diff --git a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs
index 01438bfad..572e316a0 100644
--- a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs
+++ b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Entities;
using System.Collections.Generic;
@@ -12,7 +13,7 @@ namespace MediaBrowser.Controller.Channels
public string ExternalId { get; set; }
public string ChannelId { get; set; }
-
+
public ChannelItemType ChannelItemType { get; set; }
public bool IsInfiniteStream { get; set; }
diff --git a/MediaBrowser.Controller/Channels/IChannel.cs b/MediaBrowser.Controller/Channels/IChannel.cs
index 85744119c..527454284 100644
--- a/MediaBrowser.Controller/Channels/IChannel.cs
+++ b/MediaBrowser.Controller/Channels/IChannel.cs
@@ -1,5 +1,6 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Entities;
using System.Collections.Generic;
using System.Threading;
diff --git a/MediaBrowser.Controller/Channels/IChannelManager.cs b/MediaBrowser.Controller/Channels/IChannelManager.cs
index a47f6e6ae..9ffe43827 100644
--- a/MediaBrowser.Controller/Channels/IChannelManager.cs
+++ b/MediaBrowser.Controller/Channels/IChannelManager.cs
@@ -17,6 +17,13 @@ namespace MediaBrowser.Controller.Channels
void AddParts(IEnumerable<IChannel> channels, IEnumerable<IChannelFactory> factories);
/// <summary>
+ /// Gets the channel.
+ /// </summary>
+ /// <param name="id">The identifier.</param>
+ /// <returns>Channel.</returns>
+ Channel GetChannel(string id);
+
+ /// <summary>
/// Gets the channels.
/// </summary>
/// <param name="query">The query.</param>
diff --git a/MediaBrowser.Controller/Channels/IChannelMediaItem.cs b/MediaBrowser.Controller/Channels/IChannelMediaItem.cs
index 1e634027f..357856a25 100644
--- a/MediaBrowser.Controller/Channels/IChannelMediaItem.cs
+++ b/MediaBrowser.Controller/Channels/IChannelMediaItem.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using MediaBrowser.Model.Channels;
namespace MediaBrowser.Controller.Channels
{
diff --git a/MediaBrowser.Controller/Channels/InternalChannelItemQuery.cs b/MediaBrowser.Controller/Channels/InternalChannelItemQuery.cs
index 21100ebdd..3846e8a00 100644
--- a/MediaBrowser.Controller/Channels/InternalChannelItemQuery.cs
+++ b/MediaBrowser.Controller/Channels/InternalChannelItemQuery.cs
@@ -7,5 +7,9 @@ namespace MediaBrowser.Controller.Channels
public string CategoryId { get; set; }
public User User { get; set; }
+
+ public int? StartIndex { get; set; }
+
+ public int? Limit { get; set; }
}
} \ No newline at end of file
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index 97158c112..bab550e45 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -69,13 +69,10 @@
<Link>Properties\SharedVersion.cs</Link>
</Compile>
<Compile Include="Channels\ChannelCategoryItem.cs" />
- <Compile Include="Channels\ChannelInfo.cs" />
<Compile Include="Channels\ChannelItemInfo.cs" />
<Compile Include="Channels\ChannelItemResult.cs" />
<Compile Include="Channels\ChannelItemType.cs" />
- <Compile Include="Channels\ChannelMediaContentType.cs" />
<Compile Include="Channels\ChannelMediaInfo.cs" />
- <Compile Include="Channels\ChannelMediaType.cs" />
<Compile Include="Channels\ChannelSearchInfo.cs" />
<Compile Include="Channels\IChannel.cs" />
<Compile Include="Channels\IChannelFactory.cs" />
diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
index 708f92264..c66d58ea6 100644
--- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
+++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
@@ -77,9 +77,18 @@
<Compile Include="..\MediaBrowser.Model\ApiClient\SessionUpdatesEventArgs.cs">
<Link>ApiClient\SessionUpdatesEventArgs.cs</Link>
</Compile>
+ <Compile Include="..\MediaBrowser.Model\Channels\ChannelInfo.cs">
+ <Link>Channels\ChannelInfo.cs</Link>
+ </Compile>
<Compile Include="..\MediaBrowser.Model\Channels\ChannelItemQuery.cs">
<Link>Channels\ChannelItemQuery.cs</Link>
</Compile>
+ <Compile Include="..\MediaBrowser.Model\Channels\ChannelMediaContentType.cs">
+ <Link>Channels\ChannelMediaContentType.cs</Link>
+ </Compile>
+ <Compile Include="..\MediaBrowser.Model\Channels\ChannelMediaType.cs">
+ <Link>Channels\ChannelMediaType.cs</Link>
+ </Compile>
<Compile Include="..\MediaBrowser.Model\Channels\ChannelQuery.cs">
<Link>Channels\ChannelQuery.cs</Link>
</Compile>
diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
index 8e0a67dde..677c78309 100644
--- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
+++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
@@ -64,9 +64,18 @@
<Compile Include="..\MediaBrowser.Model\ApiClient\SessionUpdatesEventArgs.cs">
<Link>ApiClient\SessionUpdatesEventArgs.cs</Link>
</Compile>
+ <Compile Include="..\MediaBrowser.Model\Channels\ChannelInfo.cs">
+ <Link>Channels\ChannelInfo.cs</Link>
+ </Compile>
<Compile Include="..\MediaBrowser.Model\Channels\ChannelItemQuery.cs">
<Link>Channels\ChannelItemQuery.cs</Link>
</Compile>
+ <Compile Include="..\MediaBrowser.Model\Channels\ChannelMediaContentType.cs">
+ <Link>Channels\ChannelMediaContentType.cs</Link>
+ </Compile>
+ <Compile Include="..\MediaBrowser.Model\Channels\ChannelMediaType.cs">
+ <Link>Channels\ChannelMediaType.cs</Link>
+ </Compile>
<Compile Include="..\MediaBrowser.Model\Channels\ChannelQuery.cs">
<Link>Channels\ChannelQuery.cs</Link>
</Compile>
diff --git a/MediaBrowser.Controller/Channels/ChannelInfo.cs b/MediaBrowser.Model/Channels/ChannelInfo.cs
index fd3a169a2..2ebfb432a 100644
--- a/MediaBrowser.Controller/Channels/ChannelInfo.cs
+++ b/MediaBrowser.Model/Channels/ChannelInfo.cs
@@ -1,6 +1,6 @@
using System.Collections.Generic;
-namespace MediaBrowser.Controller.Channels
+namespace MediaBrowser.Model.Channels
{
public class ChannelInfo
{
@@ -20,6 +20,11 @@ namespace MediaBrowser.Controller.Channels
public List<ChannelMediaContentType> ContentTypes { get; set; }
+ /// <summary>
+ /// Represents the maximum number of records the channel allows retrieving at a time
+ /// </summary>
+ public int? MaxPageSize { get; set; }
+
public ChannelInfo()
{
MediaTypes = new List<ChannelMediaType>();
diff --git a/MediaBrowser.Controller/Channels/ChannelMediaContentType.cs b/MediaBrowser.Model/Channels/ChannelMediaContentType.cs
index 2aad8e0d9..cb9f44070 100644
--- a/MediaBrowser.Controller/Channels/ChannelMediaContentType.cs
+++ b/MediaBrowser.Model/Channels/ChannelMediaContentType.cs
@@ -1,4 +1,4 @@
-namespace MediaBrowser.Controller.Channels
+namespace MediaBrowser.Model.Channels
{
public enum ChannelMediaContentType
{
diff --git a/MediaBrowser.Controller/Channels/ChannelMediaType.cs b/MediaBrowser.Model/Channels/ChannelMediaType.cs
index a03e27498..5d2201aaf 100644
--- a/MediaBrowser.Controller/Channels/ChannelMediaType.cs
+++ b/MediaBrowser.Model/Channels/ChannelMediaType.cs
@@ -1,4 +1,4 @@
-namespace MediaBrowser.Controller.Channels
+namespace MediaBrowser.Model.Channels
{
public enum ChannelMediaType
{
diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs
index 9f8826184..abad40e29 100644
--- a/MediaBrowser.Model/Dto/BaseItemDto.cs
+++ b/MediaBrowser.Model/Dto/BaseItemDto.cs
@@ -138,7 +138,8 @@ namespace MediaBrowser.Model.Dto
/// </summary>
/// <value>The channel identifier.</value>
public string ChannelId { get; set; }
-
+ public string ChannelName { get; set; }
+
/// <summary>
/// Gets or sets the overview.
/// </summary>
diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj
index 131c36044..f6f7666c7 100644
--- a/MediaBrowser.Model/MediaBrowser.Model.csproj
+++ b/MediaBrowser.Model/MediaBrowser.Model.csproj
@@ -59,7 +59,10 @@
<Compile Include="ApiClient\IServerEvents.cs" />
<Compile Include="ApiClient\GeneralCommandEventArgs.cs" />
<Compile Include="ApiClient\SessionUpdatesEventArgs.cs" />
+ <Compile Include="Channels\ChannelInfo.cs" />
<Compile Include="Channels\ChannelItemQuery.cs" />
+ <Compile Include="Channels\ChannelMediaContentType.cs" />
+ <Compile Include="Channels\ChannelMediaType.cs" />
<Compile Include="Channels\ChannelQuery.cs" />
<Compile Include="Chapters\RemoteChapterInfo.cs" />
<Compile Include="Chapters\RemoteChapterResult.cs" />
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
index db2728ebe..2b2c3d291 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
+++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
@@ -234,6 +234,11 @@ namespace MediaBrowser.Server.Implementations.Channels
return item;
}
+ public Channel GetChannel(string id)
+ {
+ return (Channel)_libraryManager.GetItemById(new Guid(id));
+ }
+
private Guid GetInternalChannelId(string name)
{
if (string.IsNullOrWhiteSpace(name))
@@ -246,48 +251,70 @@ namespace MediaBrowser.Server.Implementations.Channels
public async Task<QueryResult<BaseItemDto>> GetChannelItems(ChannelItemQuery query, CancellationToken cancellationToken)
{
- var user = string.IsNullOrWhiteSpace(query.UserId)
- ? null
- : _userManager.GetUserById(new Guid(query.UserId));
-
var queryChannelId = query.ChannelId;
- var channels = string.IsNullOrWhiteSpace(queryChannelId)
- ? _channelEntities
- : _channelEntities.Where(i => i.Id == new Guid(queryChannelId));
+ // Get the internal channel entity
+ var channel = _channelEntities.First(i => i.Id == new Guid(queryChannelId));
- var itemTasks = channels.Select(async channel =>
+ // Find the corresponding channel provider plugin
+ var channelProvider = GetChannelProvider(channel);
+
+ var channelInfo = channelProvider.GetChannelInfo();
+
+ int? providerStartIndex = null;
+ int? providerLimit = null;
+
+ if (channelInfo.MaxPageSize.HasValue)
{
- var channelProvider = GetChannelProvider(channel);
+ providerStartIndex = query.StartIndex;
+
+ if (!query.Limit.HasValue || query.Limit.Value > channelInfo.MaxPageSize.Value)
+ {
+ throw new ArgumentException(string.Format("Channel {0} only supports a maximum of {1} records at a time.", channel.Name, channelInfo.MaxPageSize.Value));
+ }
+ providerLimit = query.Limit;
+ }
- var items = await GetChannelItems(channelProvider, user, query.CategoryId, cancellationToken)
- .ConfigureAwait(false);
+ var user = string.IsNullOrWhiteSpace(query.UserId)
+ ? null
+ : _userManager.GetUserById(new Guid(query.UserId));
- var channelId = channel.Id.ToString("N");
+ var itemsResult = await GetChannelItems(channelProvider, user, query.CategoryId, providerStartIndex, providerLimit, cancellationToken)
+ .ConfigureAwait(false);
- var channelPlugin = GetChannelProvider(channel);
+ var providerTotalRecordCount = providerLimit.HasValue ? itemsResult.TotalRecordCount : null;
- var tasks = items.Select(i => GetChannelItemEntity(i, channelPlugin, channelId, cancellationToken));
+ var tasks = itemsResult.Items.Select(i => GetChannelItemEntity(i, channelProvider, channel, cancellationToken));
- return await Task.WhenAll(tasks).ConfigureAwait(false);
- });
+ var internalItems = await Task.WhenAll(tasks).ConfigureAwait(false);
- var results = await Task.WhenAll(itemTasks).ConfigureAwait(false);
+ if (user != null)
+ {
+ internalItems = internalItems.Where(i => i.IsVisible(user)).ToArray();
- return await GetReturnItems(results.SelectMany(i => i), user, query, cancellationToken).ConfigureAwait(false);
+ if (providerTotalRecordCount.HasValue)
+ {
+ providerTotalRecordCount = providerTotalRecordCount.Value;
+ }
+ }
+
+ return await GetReturnItems(internalItems, providerTotalRecordCount, user, query, cancellationToken).ConfigureAwait(false);
}
private readonly SemaphoreSlim _resourcePool = new SemaphoreSlim(1, 1);
- private async Task<IEnumerable<ChannelItemInfo>> GetChannelItems(IChannel channel, User user, string categoryId, CancellationToken cancellationToken)
+ private async Task<ChannelItemResult> GetChannelItems(IChannel channel, User user, string categoryId, int? startIndex, int? limit, CancellationToken cancellationToken)
{
var cachePath = GetChannelDataCachePath(channel, user, categoryId);
try
{
- var channelItemResult = _jsonSerializer.DeserializeFromFile<ChannelItemResult>(cachePath);
-
- if (_fileSystem.GetLastWriteTimeUtc(cachePath).Add(channelItemResult.CacheLength) > DateTime.UtcNow)
+ if (!startIndex.HasValue && !limit.HasValue)
{
- return channelItemResult.Items;
+ var channelItemResult = _jsonSerializer.DeserializeFromFile<ChannelItemResult>(cachePath);
+
+ if (_fileSystem.GetLastWriteTimeUtc(cachePath).Add(channelItemResult.CacheLength) > DateTime.UtcNow)
+ {
+ return channelItemResult;
+ }
}
}
catch (FileNotFoundException)
@@ -305,11 +332,14 @@ namespace MediaBrowser.Server.Implementations.Channels
{
try
{
- var channelItemResult = _jsonSerializer.DeserializeFromFile<ChannelItemResult>(cachePath);
-
- if (_fileSystem.GetLastWriteTimeUtc(cachePath).Add(channelItemResult.CacheLength) > DateTime.UtcNow)
+ if (!startIndex.HasValue && !limit.HasValue)
{
- return channelItemResult.Items;
+ var channelItemResult = _jsonSerializer.DeserializeFromFile<ChannelItemResult>(cachePath);
+
+ if (_fileSystem.GetLastWriteTimeUtc(cachePath).Add(channelItemResult.CacheLength) > DateTime.UtcNow)
+ {
+ return channelItemResult;
+ }
}
}
catch (FileNotFoundException)
@@ -323,7 +353,9 @@ namespace MediaBrowser.Server.Implementations.Channels
var query = new InternalChannelItemQuery
{
- User = user
+ User = user,
+ StartIndex = startIndex,
+ Limit = limit
};
if (!string.IsNullOrWhiteSpace(categoryId))
@@ -335,9 +367,12 @@ namespace MediaBrowser.Server.Implementations.Channels
var result = await channel.GetChannelItems(query, cancellationToken).ConfigureAwait(false);
- CacheResponse(result, cachePath);
+ if (!startIndex.HasValue && !limit.HasValue)
+ {
+ CacheResponse(result, cachePath);
+ }
- return result.Items;
+ return result;
}
finally
{
@@ -370,22 +405,26 @@ namespace MediaBrowser.Server.Implementations.Channels
return Path.Combine(_config.ApplicationPaths.CachePath, "channels", channelId, version, categoryKey, user.Id.ToString("N") + ".json");
}
- private async Task<QueryResult<BaseItemDto>> GetReturnItems(IEnumerable<BaseItem> items, User user, ChannelItemQuery query, CancellationToken cancellationToken)
+ private async Task<QueryResult<BaseItemDto>> GetReturnItems(IEnumerable<BaseItem> items, int? totalCountFromProvider, User user, ChannelItemQuery query, CancellationToken cancellationToken)
{
items = ApplyFilters(items, query.Filters, user);
- items = _libraryManager.Sort(items, user, query.SortBy, query.SortOrder ?? SortOrder.Ascending);
+ var sortBy = query.SortBy.Length == 0 ? new[] { ItemSortBy.SortName } : query.SortBy;
+ items = _libraryManager.Sort(items, user, sortBy, query.SortOrder ?? SortOrder.Ascending);
var all = items.ToList();
- var totalCount = all.Count;
+ var totalCount = totalCountFromProvider ?? all.Count;
- if (query.StartIndex.HasValue)
+ if (!totalCountFromProvider.HasValue)
{
- all = all.Skip(query.StartIndex.Value).ToList();
- }
- if (query.Limit.HasValue)
- {
- all = all.Take(query.Limit.Value).ToList();
+ if (query.StartIndex.HasValue)
+ {
+ all = all.Skip(query.StartIndex.Value).ToList();
+ }
+ if (query.Limit.HasValue)
+ {
+ all = all.Take(query.Limit.Value).ToList();
+ }
}
await RefreshIfNeeded(all, cancellationToken).ConfigureAwait(false);
@@ -412,13 +451,8 @@ namespace MediaBrowser.Server.Implementations.Channels
return externalId + (channelProvider.DataVersion ?? string.Empty) + (channelProvider.Name ?? string.Empty) + "11";
}
- private async Task<BaseItem> GetChannelItemEntity(ChannelItemInfo info, IChannel channelProvider, string internalChannnelId, CancellationToken cancellationToken)
+ private async Task<BaseItem> GetChannelItemEntity(ChannelItemInfo info, IChannel channelProvider, Channel internalChannel, CancellationToken cancellationToken)
{
- if (string.IsNullOrEmpty(internalChannnelId))
- {
- throw new ArgumentNullException("internalChannnelId");
- }
-
BaseItem item;
Guid id;
var isNew = false;
@@ -488,7 +522,7 @@ namespace MediaBrowser.Server.Implementations.Channels
channelItem.OriginalImageUrl = info.ImageUrl;
channelItem.ExternalId = info.Id;
- channelItem.ChannelId = internalChannnelId;
+ channelItem.ChannelId = internalChannel.Id.ToString("N");
channelItem.ChannelItemType = info.Type;
if (isNew)
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index ceb39da03..d83fd412f 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -12,14 +12,11 @@ using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Providers;
-using MediaBrowser.Controller.Session;
-using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Drawing;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Querying;
-using MediaBrowser.Model.Session;
using MoreLinq;
using System;
using System.Collections.Generic;
@@ -41,7 +38,9 @@ namespace MediaBrowser.Server.Implementations.Dto
private readonly IFileSystem _fileSystem;
private readonly IProviderManager _providerManager;
- public DtoService(ILogger logger, ILibraryManager libraryManager, IUserManager userManager, IUserDataManager userDataRepository, IItemRepository itemRepo, IImageProcessor imageProcessor, IServerConfigurationManager config, IFileSystem fileSystem, IProviderManager providerManager)
+ private readonly Func<IChannelManager> _channelManagerFactory;
+
+ public DtoService(ILogger logger, ILibraryManager libraryManager, IUserManager userManager, IUserDataManager userDataRepository, IItemRepository itemRepo, IImageProcessor imageProcessor, IServerConfigurationManager config, IFileSystem fileSystem, IProviderManager providerManager, Func<IChannelManager> channelManagerFactory)
{
_logger = logger;
_libraryManager = libraryManager;
@@ -52,6 +51,7 @@ namespace MediaBrowser.Server.Implementations.Dto
_config = config;
_fileSystem = fileSystem;
_providerManager = providerManager;
+ _channelManagerFactory = channelManagerFactory;
}
/// <summary>
@@ -1147,6 +1147,7 @@ namespace MediaBrowser.Server.Implementations.Dto
if (channelItem != null)
{
dto.ChannelId = channelItem.ChannelId;
+ dto.ChannelName = _channelManagerFactory().GetChannel(channelItem.ChannelId).Name;
}
}
diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs
index 1cfc80f1c..7ccd92f04 100644
--- a/MediaBrowser.ServerApplication/ApplicationHost.cs
+++ b/MediaBrowser.ServerApplication/ApplicationHost.cs
@@ -493,7 +493,7 @@ namespace MediaBrowser.ServerApplication
ImageProcessor = new ImageProcessor(LogManager.GetLogger("ImageProcessor"), ServerConfigurationManager.ApplicationPaths, FileSystemManager, JsonSerializer, MediaEncoder);
RegisterSingleInstance(ImageProcessor);
- DtoService = new DtoService(Logger, LibraryManager, UserManager, UserDataManager, ItemRepository, ImageProcessor, ServerConfigurationManager, FileSystemManager, ProviderManager);
+ DtoService = new DtoService(Logger, LibraryManager, UserManager, UserDataManager, ItemRepository, ImageProcessor, ServerConfigurationManager, FileSystemManager, ProviderManager, () => ChannelManager);
RegisterSingleInstance(DtoService);
SessionManager = new SessionManager(UserDataManager, ServerConfigurationManager, Logger, UserRepository, LibraryManager, UserManager, musicManager, DtoService, ImageProcessor, ItemRepository, JsonSerializer, this, HttpClient);
diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec
index 69ef27c11..b2bb75a9a 100644
--- a/Nuget/MediaBrowser.Common.Internal.nuspec
+++ b/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.371</version>
+ <version>3.0.372</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.371" />
+ <dependency id="MediaBrowser.Common" version="3.0.372" />
<dependency id="NLog" version="2.1.0" />
<dependency id="SimpleInjector" version="2.5.0" />
<dependency id="sharpcompress" version="0.10.2" />
diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec
index 9e2af2bca..348d67d07 100644
--- a/Nuget/MediaBrowser.Common.nuspec
+++ b/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.371</version>
+ <version>3.0.372</version>
<title>MediaBrowser.Common</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec
index 34c558302..08c81391f 100644
--- a/Nuget/MediaBrowser.Server.Core.nuspec
+++ b/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.371</version>
+ <version>3.0.372</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.371" />
+ <dependency id="MediaBrowser.Common" version="3.0.372" />
</dependencies>
</metadata>
<files>