aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/Channels/ChannelManager.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Channels/ChannelManager.cs56
1 files changed, 39 insertions, 17 deletions
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
index 964a4bbf6..0ddef73c5 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
+++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
@@ -5,6 +5,7 @@ using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Localization;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Model.Channels;
@@ -37,7 +38,9 @@ namespace MediaBrowser.Server.Implementations.Channels
private readonly IFileSystem _fileSystem;
private readonly IJsonSerializer _jsonSerializer;
- public ChannelManager(IUserManager userManager, IDtoService dtoService, ILibraryManager libraryManager, ILogger logger, IServerConfigurationManager config, IFileSystem fileSystem, IUserDataManager userDataManager, IJsonSerializer jsonSerializer)
+ private readonly ILocalizationManager _localization;
+
+ public ChannelManager(IUserManager userManager, IDtoService dtoService, ILibraryManager libraryManager, ILogger logger, IServerConfigurationManager config, IFileSystem fileSystem, IUserDataManager userDataManager, IJsonSerializer jsonSerializer, ILocalizationManager localization)
{
_userManager = userManager;
_dtoService = dtoService;
@@ -47,6 +50,7 @@ namespace MediaBrowser.Server.Implementations.Channels
_fileSystem = fileSystem;
_userDataManager = userDataManager;
_jsonSerializer = jsonSerializer;
+ _localization = localization;
}
public void AddParts(IEnumerable<IChannel> channels, IEnumerable<IChannelFactory> factories)
@@ -371,13 +375,14 @@ namespace MediaBrowser.Server.Implementations.Channels
Id = id,
DateCreated = _fileSystem.GetCreationTimeUtc(fileInfo),
DateModified = _fileSystem.GetLastWriteTimeUtc(fileInfo),
- Path = path,
- OfficialRating = GetOfficialRating(channelInfo.ParentalRating)
+ Path = path
};
isNew = true;
}
+ item.OfficialRating = GetOfficialRating(channelInfo.ParentalRating);
+ item.Overview = channelInfo.Description;
item.HomePageUrl = channelInfo.HomePageUrl;
item.OriginalChannelName = channelInfo.Name;
@@ -512,6 +517,14 @@ namespace MediaBrowser.Server.Implementations.Channels
.SelectMany(i => i.Item2.Items.Select(m => new Tuple<IChannel, ChannelItemInfo>(i.Item1, m)))
.OrderBy(i => i.Item2.Name);
+ if (query.ContentTypes.Length > 0)
+ {
+ // Avoid implicitly captured closure
+ var contentTypes = query.ContentTypes;
+
+ items = items.Where(i => contentTypes.Contains(i.Item2.ContentType));
+ }
+
if (query.StartIndex.HasValue)
{
items = items.Skip(query.StartIndex.Value);
@@ -737,35 +750,26 @@ namespace MediaBrowser.Server.Implementations.Channels
userCacheKey = hasCacheKey.GetCacheKey(userId) ?? string.Empty;
}
- var folderKey = string.IsNullOrWhiteSpace(folderId) ? "root" : folderId;
- folderKey = (folderKey + userCacheKey).GetMD5().ToString("N");
+ var filename = string.IsNullOrWhiteSpace(folderId) ? "root" : folderId;
+ filename += userCacheKey;
- var version = string.IsNullOrWhiteSpace(channel.DataVersion) ? "0" : channel.DataVersion;
-
- var filename = userId;
- var hashfilename = false;
+ var version = (channel.DataVersion ?? string.Empty).GetMD5().ToString("N");
if (sortField.HasValue)
{
filename += "-sortField-" + sortField.Value;
- hashfilename = true;
}
if (sortDescending)
{
filename += "-sortDescending";
- hashfilename = true;
}
- if (hashfilename)
- {
- filename = filename.GetMD5().ToString("N");
- }
+ filename = filename.GetMD5().ToString("N");
return Path.Combine(_config.ApplicationPaths.CachePath,
"channels",
channelId,
version,
- folderKey,
filename + ".json");
}
@@ -813,7 +817,7 @@ namespace MediaBrowser.Server.Implementations.Channels
// Increment this as needed to force new downloads
// Incorporate Name because it's being used to convert channel entity to provider
return externalId + (channelProvider.DataVersion ?? string.Empty) +
- (channelProvider.Name ?? string.Empty) + "15";
+ (channelProvider.Name ?? string.Empty) + "16";
}
private async Task<BaseItem> GetChannelItemEntity(ChannelItemInfo info, IChannel channelProvider, Channel internalChannel, CancellationToken cancellationToken)
@@ -1022,5 +1026,23 @@ namespace MediaBrowser.Server.Implementations.Channels
return items;
}
+
+ public async Task<BaseItemDto> GetChannelFolder(string userId, CancellationToken cancellationToken)
+ {
+ var user = string.IsNullOrEmpty(userId) ? null : _userManager.GetUserById(new Guid(userId));
+
+ // Get everything
+ var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)).ToList();
+
+ var folder = await GetInternalChannelFolder(userId, cancellationToken).ConfigureAwait(false);
+
+ return _dtoService.GetBaseItemDto(folder, fields, user);
+ }
+
+ public async Task<Folder> GetInternalChannelFolder(string userId, CancellationToken cancellationToken)
+ {
+ var name = _localization.GetLocalizedString("ViewTypeChannels");
+ return await _libraryManager.GetNamedView(name, "channels", "zz_" + name, cancellationToken).ConfigureAwait(false);
+ }
}
}