mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-06-04 06:04:25 -04:00
Seperate changes from #1023
The unrelated changes from #1023 (and more)
This commit is contained in:
parent
5024c52c60
commit
6566c91360
@ -3,12 +3,10 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Common.Configuration;
|
|
||||||
using MediaBrowser.Common.Plugins;
|
using MediaBrowser.Common.Plugins;
|
||||||
using MediaBrowser.Common.Updates;
|
using MediaBrowser.Common.Updates;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Authentication;
|
using MediaBrowser.Controller.Authentication;
|
||||||
using MediaBrowser.Controller.Configuration;
|
|
||||||
using MediaBrowser.Controller.Devices;
|
using MediaBrowser.Controller.Devices;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
@ -29,31 +27,39 @@ namespace Emby.Server.Implementations.Activity
|
|||||||
{
|
{
|
||||||
public class ActivityLogEntryPoint : IServerEntryPoint
|
public class ActivityLogEntryPoint : IServerEntryPoint
|
||||||
{
|
{
|
||||||
|
private readonly ILogger _logger;
|
||||||
private readonly IInstallationManager _installationManager;
|
private readonly IInstallationManager _installationManager;
|
||||||
private readonly ISessionManager _sessionManager;
|
private readonly ISessionManager _sessionManager;
|
||||||
private readonly ITaskManager _taskManager;
|
private readonly ITaskManager _taskManager;
|
||||||
private readonly IActivityManager _activityManager;
|
private readonly IActivityManager _activityManager;
|
||||||
private readonly ILocalizationManager _localization;
|
private readonly ILocalizationManager _localization;
|
||||||
private readonly ILibraryManager _libraryManager;
|
|
||||||
private readonly ISubtitleManager _subManager;
|
private readonly ISubtitleManager _subManager;
|
||||||
private readonly IUserManager _userManager;
|
private readonly IUserManager _userManager;
|
||||||
private readonly IServerConfigurationManager _config;
|
|
||||||
private readonly IServerApplicationHost _appHost;
|
private readonly IServerApplicationHost _appHost;
|
||||||
private readonly IDeviceManager _deviceManager;
|
private readonly IDeviceManager _deviceManager;
|
||||||
|
|
||||||
public ActivityLogEntryPoint(ISessionManager sessionManager, IDeviceManager deviceManager, ITaskManager taskManager, IActivityManager activityManager, ILocalizationManager localization, IInstallationManager installationManager, ILibraryManager libraryManager, ISubtitleManager subManager, IUserManager userManager, IServerConfigurationManager config, IServerApplicationHost appHost)
|
public ActivityLogEntryPoint(
|
||||||
|
ILogger<ActivityLogEntryPoint> logger,
|
||||||
|
ISessionManager sessionManager,
|
||||||
|
IDeviceManager deviceManager,
|
||||||
|
ITaskManager taskManager,
|
||||||
|
IActivityManager activityManager,
|
||||||
|
ILocalizationManager localization,
|
||||||
|
IInstallationManager installationManager,
|
||||||
|
ISubtitleManager subManager,
|
||||||
|
IUserManager userManager,
|
||||||
|
IServerApplicationHost appHost)
|
||||||
{
|
{
|
||||||
|
_logger = logger;
|
||||||
_sessionManager = sessionManager;
|
_sessionManager = sessionManager;
|
||||||
|
_deviceManager = deviceManager;
|
||||||
_taskManager = taskManager;
|
_taskManager = taskManager;
|
||||||
_activityManager = activityManager;
|
_activityManager = activityManager;
|
||||||
_localization = localization;
|
_localization = localization;
|
||||||
_installationManager = installationManager;
|
_installationManager = installationManager;
|
||||||
_libraryManager = libraryManager;
|
|
||||||
_subManager = subManager;
|
_subManager = subManager;
|
||||||
_userManager = userManager;
|
_userManager = userManager;
|
||||||
_config = config;
|
|
||||||
_appHost = appHost;
|
_appHost = appHost;
|
||||||
_deviceManager = deviceManager;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task RunAsync()
|
public Task RunAsync()
|
||||||
@ -124,7 +130,7 @@ namespace Emby.Server.Implementations.Activity
|
|||||||
|
|
||||||
if (item == null)
|
if (item == null)
|
||||||
{
|
{
|
||||||
//_logger.LogWarning("PlaybackStopped reported with null media info.");
|
_logger.LogWarning("PlaybackStopped reported with null media info.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,7 +161,7 @@ namespace Emby.Server.Implementations.Activity
|
|||||||
|
|
||||||
if (item == null)
|
if (item == null)
|
||||||
{
|
{
|
||||||
//_logger.LogWarning("PlaybackStart reported with null media info.");
|
_logger.LogWarning("PlaybackStart reported with null media info.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,6 +209,7 @@ namespace Emby.Server.Implementations.Activity
|
|||||||
{
|
{
|
||||||
return NotificationType.AudioPlayback.ToString();
|
return NotificationType.AudioPlayback.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (string.Equals(mediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(mediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return NotificationType.VideoPlayback.ToString();
|
return NotificationType.VideoPlayback.ToString();
|
||||||
@ -217,6 +224,7 @@ namespace Emby.Server.Implementations.Activity
|
|||||||
{
|
{
|
||||||
return NotificationType.AudioPlaybackStopped.ToString();
|
return NotificationType.AudioPlaybackStopped.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (string.Equals(mediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(mediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return NotificationType.VideoPlaybackStopped.ToString();
|
return NotificationType.VideoPlaybackStopped.ToString();
|
||||||
@ -415,6 +423,7 @@ namespace Emby.Server.Implementations.Activity
|
|||||||
{
|
{
|
||||||
vals.Add(e.Result.ErrorMessage);
|
vals.Add(e.Result.ErrorMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(e.Result.LongErrorMessage))
|
if (!string.IsNullOrEmpty(e.Result.LongErrorMessage))
|
||||||
{
|
{
|
||||||
vals.Add(e.Result.LongErrorMessage);
|
vals.Add(e.Result.LongErrorMessage);
|
||||||
@ -424,7 +433,7 @@ namespace Emby.Server.Implementations.Activity
|
|||||||
{
|
{
|
||||||
Name = string.Format(_localization.GetLocalizedString("ScheduledTaskFailedWithName"), task.Name),
|
Name = string.Format(_localization.GetLocalizedString("ScheduledTaskFailedWithName"), task.Name),
|
||||||
Type = NotificationType.TaskFailed.ToString(),
|
Type = NotificationType.TaskFailed.ToString(),
|
||||||
Overview = string.Join(Environment.NewLine, vals.ToArray()),
|
Overview = string.Join(Environment.NewLine, vals),
|
||||||
ShortOverview = runningTime,
|
ShortOverview = runningTime,
|
||||||
Severity = LogLevel.Error
|
Severity = LogLevel.Error
|
||||||
});
|
});
|
||||||
@ -503,6 +512,7 @@ namespace Emby.Server.Implementations.Activity
|
|||||||
{
|
{
|
||||||
values.Add(CreateValueString(span.Hours, "hour"));
|
values.Add(CreateValueString(span.Hours, "hour"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Number of minutes
|
// Number of minutes
|
||||||
if (span.Minutes >= 1)
|
if (span.Minutes >= 1)
|
||||||
{
|
{
|
||||||
@ -526,6 +536,7 @@ namespace Emby.Server.Implementations.Activity
|
|||||||
|
|
||||||
builder.Append(values[i]);
|
builder.Append(values[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return result
|
// Return result
|
||||||
return builder.ToString();
|
return builder.ToString();
|
||||||
}
|
}
|
||||||
|
@ -831,10 +831,10 @@ namespace Emby.Server.Implementations
|
|||||||
DtoService = new DtoService(LoggerFactory, LibraryManager, UserDataManager, ItemRepository, ImageProcessor, ProviderManager, this, () => MediaSourceManager, () => LiveTvManager);
|
DtoService = new DtoService(LoggerFactory, LibraryManager, UserDataManager, ItemRepository, ImageProcessor, ProviderManager, this, () => MediaSourceManager, () => LiveTvManager);
|
||||||
serviceCollection.AddSingleton(DtoService);
|
serviceCollection.AddSingleton(DtoService);
|
||||||
|
|
||||||
ChannelManager = new ChannelManager(UserManager, DtoService, LibraryManager, LoggerFactory, ServerConfigurationManager, FileSystemManager, UserDataManager, JsonSerializer, LocalizationManager, HttpClient, ProviderManager);
|
ChannelManager = new ChannelManager(UserManager, DtoService, LibraryManager, LoggerFactory, ServerConfigurationManager, FileSystemManager, UserDataManager, JsonSerializer, ProviderManager);
|
||||||
serviceCollection.AddSingleton(ChannelManager);
|
serviceCollection.AddSingleton(ChannelManager);
|
||||||
|
|
||||||
SessionManager = new SessionManager(UserDataManager, LoggerFactory, LibraryManager, UserManager, musicManager, DtoService, ImageProcessor, JsonSerializer, this, HttpClient, AuthenticationRepository, DeviceManager, MediaSourceManager);
|
SessionManager = new SessionManager(UserDataManager, LoggerFactory, LibraryManager, UserManager, musicManager, DtoService, ImageProcessor, this, AuthenticationRepository, DeviceManager, MediaSourceManager);
|
||||||
serviceCollection.AddSingleton(SessionManager);
|
serviceCollection.AddSingleton(SessionManager);
|
||||||
|
|
||||||
serviceCollection.AddSingleton<IDlnaManager>(
|
serviceCollection.AddSingleton<IDlnaManager>(
|
||||||
@ -1035,7 +1035,6 @@ namespace Emby.Server.Implementations
|
|||||||
Video.LiveTvManager = LiveTvManager;
|
Video.LiveTvManager = LiveTvManager;
|
||||||
Folder.UserViewManager = UserViewManager;
|
Folder.UserViewManager = UserViewManager;
|
||||||
UserView.TVSeriesManager = TVSeriesManager;
|
UserView.TVSeriesManager = TVSeriesManager;
|
||||||
UserView.PlaylistManager = PlaylistManager;
|
|
||||||
UserView.CollectionManager = CollectionManager;
|
UserView.CollectionManager = CollectionManager;
|
||||||
BaseItem.MediaSourceManager = MediaSourceManager;
|
BaseItem.MediaSourceManager = MediaSourceManager;
|
||||||
CollectionFolder.XmlSerializer = XmlSerializer;
|
CollectionFolder.XmlSerializer = XmlSerializer;
|
||||||
|
@ -6,7 +6,6 @@ using System.Linq;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Net;
|
|
||||||
using MediaBrowser.Common.Progress;
|
using MediaBrowser.Common.Progress;
|
||||||
using MediaBrowser.Controller.Channels;
|
using MediaBrowser.Controller.Channels;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
@ -20,7 +19,6 @@ using MediaBrowser.Controller.Providers;
|
|||||||
using MediaBrowser.Model.Channels;
|
using MediaBrowser.Model.Channels;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Globalization;
|
|
||||||
using MediaBrowser.Model.IO;
|
using MediaBrowser.Model.IO;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
@ -40,11 +38,8 @@ namespace Emby.Server.Implementations.Channels
|
|||||||
private readonly IServerConfigurationManager _config;
|
private readonly IServerConfigurationManager _config;
|
||||||
private readonly IFileSystem _fileSystem;
|
private readonly IFileSystem _fileSystem;
|
||||||
private readonly IJsonSerializer _jsonSerializer;
|
private readonly IJsonSerializer _jsonSerializer;
|
||||||
private readonly IHttpClient _httpClient;
|
|
||||||
private readonly IProviderManager _providerManager;
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
private readonly ILocalizationManager _localization;
|
|
||||||
|
|
||||||
public ChannelManager(
|
public ChannelManager(
|
||||||
IUserManager userManager,
|
IUserManager userManager,
|
||||||
IDtoService dtoService,
|
IDtoService dtoService,
|
||||||
@ -54,8 +49,6 @@ namespace Emby.Server.Implementations.Channels
|
|||||||
IFileSystem fileSystem,
|
IFileSystem fileSystem,
|
||||||
IUserDataManager userDataManager,
|
IUserDataManager userDataManager,
|
||||||
IJsonSerializer jsonSerializer,
|
IJsonSerializer jsonSerializer,
|
||||||
ILocalizationManager localization,
|
|
||||||
IHttpClient httpClient,
|
|
||||||
IProviderManager providerManager)
|
IProviderManager providerManager)
|
||||||
{
|
{
|
||||||
_userManager = userManager;
|
_userManager = userManager;
|
||||||
@ -66,8 +59,6 @@ namespace Emby.Server.Implementations.Channels
|
|||||||
_fileSystem = fileSystem;
|
_fileSystem = fileSystem;
|
||||||
_userDataManager = userDataManager;
|
_userDataManager = userDataManager;
|
||||||
_jsonSerializer = jsonSerializer;
|
_jsonSerializer = jsonSerializer;
|
||||||
_localization = localization;
|
|
||||||
_httpClient = httpClient;
|
|
||||||
_providerManager = providerManager;
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,14 +89,11 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
var channelTuples = new List<Tuple<BaseItemDto, LiveTvChannel>>();
|
var channelTuples = new List<Tuple<BaseItemDto, LiveTvChannel>>();
|
||||||
|
|
||||||
var index = 0;
|
var index = 0;
|
||||||
var allCollectionFolders = _libraryManager.GetUserRootFolder().Children.OfType<Folder>().ToList();
|
|
||||||
|
|
||||||
foreach (var item in items)
|
foreach (var item in items)
|
||||||
{
|
{
|
||||||
var dto = GetBaseItemDtoInternal(item, options, allCollectionFolders, user, owner);
|
var dto = GetBaseItemDtoInternal(item, options, user, owner);
|
||||||
|
|
||||||
var tvChannel = item as LiveTvChannel;
|
if (item is LiveTvChannel tvChannel)
|
||||||
if (tvChannel != null)
|
|
||||||
{
|
{
|
||||||
channelTuples.Add(new Tuple<BaseItemDto, LiveTvChannel>(dto, tvChannel));
|
channelTuples.Add(new Tuple<BaseItemDto, LiveTvChannel>(dto, tvChannel));
|
||||||
}
|
}
|
||||||
@ -105,9 +102,7 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
programTuples.Add(new Tuple<BaseItem, BaseItemDto>(item, dto));
|
programTuples.Add(new Tuple<BaseItem, BaseItemDto>(item, dto));
|
||||||
}
|
}
|
||||||
|
|
||||||
var byName = item as IItemByName;
|
if (item is IItemByName byName)
|
||||||
|
|
||||||
if (byName != null)
|
|
||||||
{
|
{
|
||||||
if (options.ContainsField(ItemFields.ItemCounts))
|
if (options.ContainsField(ItemFields.ItemCounts))
|
||||||
{
|
{
|
||||||
@ -130,8 +125,7 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
|
|
||||||
if (programTuples.Count > 0)
|
if (programTuples.Count > 0)
|
||||||
{
|
{
|
||||||
var task = _livetvManager().AddInfoToProgramDto(programTuples, options.Fields, user);
|
_livetvManager().AddInfoToProgramDto(programTuples, options.Fields, user).GetAwaiter().GetResult();
|
||||||
Task.WaitAll(task);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channelTuples.Count > 0)
|
if (channelTuples.Count > 0)
|
||||||
@ -144,8 +138,7 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
|
|
||||||
public BaseItemDto GetBaseItemDto(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null)
|
public BaseItemDto GetBaseItemDto(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null)
|
||||||
{
|
{
|
||||||
var allCollectionFolders = _libraryManager.GetUserRootFolder().Children.OfType<Folder>().ToList();
|
var dto = GetBaseItemDtoInternal(item, options, user, owner);
|
||||||
var dto = GetBaseItemDtoInternal(item, options, allCollectionFolders, user, owner);
|
|
||||||
var tvChannel = item as LiveTvChannel;
|
var tvChannel = item as LiveTvChannel;
|
||||||
if (tvChannel != null)
|
if (tvChannel != null)
|
||||||
{
|
{
|
||||||
@ -188,7 +181,7 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private BaseItemDto GetBaseItemDtoInternal(BaseItem item, DtoOptions options, List<Folder> allCollectionFolders, User user = null, BaseItem owner = null)
|
private BaseItemDto GetBaseItemDtoInternal(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null)
|
||||||
{
|
{
|
||||||
var dto = new BaseItemDto
|
var dto = new BaseItemDto
|
||||||
{
|
{
|
||||||
@ -312,6 +305,7 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
{
|
{
|
||||||
path = path.TrimStart('.');
|
path = path.TrimStart('.');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(path) && containers.Contains(path, StringComparer.OrdinalIgnoreCase))
|
if (!string.IsNullOrEmpty(path) && containers.Contains(path, StringComparer.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
fileExtensionContainer = path;
|
fileExtensionContainer = path;
|
||||||
@ -325,8 +319,7 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
|
|
||||||
public BaseItemDto GetItemByNameDto(BaseItem item, DtoOptions options, List<BaseItem> taggedItems, User user = null)
|
public BaseItemDto GetItemByNameDto(BaseItem item, DtoOptions options, List<BaseItem> taggedItems, User user = null)
|
||||||
{
|
{
|
||||||
var allCollectionFolders = _libraryManager.GetUserRootFolder().Children.OfType<Folder>().ToList();
|
var dto = GetBaseItemDtoInternal(item, options, user);
|
||||||
var dto = GetBaseItemDtoInternal(item, options, allCollectionFolders, user);
|
|
||||||
|
|
||||||
if (taggedItems != null && options.ContainsField(ItemFields.ItemCounts))
|
if (taggedItems != null && options.ContainsField(ItemFields.ItemCounts))
|
||||||
{
|
{
|
||||||
@ -1051,14 +1044,15 @@ namespace Emby.Server.Implementations.Dto
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mediaStreams = dto.MediaSources.Where(i => string.Equals(i.Id, item.Id.ToString("N"), StringComparison.OrdinalIgnoreCase))
|
string id = item.Id.ToString("N");
|
||||||
|
mediaStreams = dto.MediaSources.Where(i => string.Equals(i.Id, id, StringComparison.OrdinalIgnoreCase))
|
||||||
.SelectMany(i => i.MediaStreams)
|
.SelectMany(i => i.MediaStreams)
|
||||||
.ToArray();
|
.ToArray();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mediaStreams = _mediaSourceManager().GetStaticMediaSources(item, true).First().MediaStreams.ToArray();
|
mediaStreams = _mediaSourceManager().GetStaticMediaSources(item, true)[0].MediaStreams.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
dto.MediaStreams = mediaStreams;
|
dto.MediaStreams = mediaStreams;
|
||||||
|
@ -15,13 +15,9 @@ namespace Emby.Server.Implementations.Security
|
|||||||
{
|
{
|
||||||
public class AuthenticationRepository : BaseSqliteRepository, IAuthenticationRepository
|
public class AuthenticationRepository : BaseSqliteRepository, IAuthenticationRepository
|
||||||
{
|
{
|
||||||
private readonly IServerConfigurationManager _config;
|
|
||||||
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
|
||||||
|
|
||||||
public AuthenticationRepository(ILoggerFactory loggerFactory, IServerConfigurationManager config)
|
public AuthenticationRepository(ILoggerFactory loggerFactory, IServerConfigurationManager config)
|
||||||
: base(loggerFactory.CreateLogger(nameof(AuthenticationRepository)))
|
: base(loggerFactory.CreateLogger(nameof(AuthenticationRepository)))
|
||||||
{
|
{
|
||||||
_config = config;
|
|
||||||
DbFilePath = Path.Combine(config.ApplicationPaths.DataPath, "authentication.db");
|
DbFilePath = Path.Combine(config.ApplicationPaths.DataPath, "authentication.db");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ namespace Emby.Server.Implementations.Services
|
|||||||
|
|
||||||
foreach (var propertyInfo in RestPath.GetSerializableProperties(type))
|
foreach (var propertyInfo in RestPath.GetSerializableProperties(type))
|
||||||
{
|
{
|
||||||
var propertySetFn = TypeAccessor.GetSetPropertyMethod(type, propertyInfo);
|
var propertySetFn = TypeAccessor.GetSetPropertyMethod(propertyInfo);
|
||||||
var propertyType = propertyInfo.PropertyType;
|
var propertyType = propertyInfo.PropertyType;
|
||||||
var propertyParseStringFn = GetParseFn(propertyType);
|
var propertyParseStringFn = GetParseFn(propertyType);
|
||||||
var propertySerializer = new PropertySerializerEntry(propertySetFn, propertyParseStringFn, propertyType);
|
var propertySerializer = new PropertySerializerEntry(propertySetFn, propertyParseStringFn, propertyType);
|
||||||
@ -110,9 +110,9 @@ namespace Emby.Server.Implementations.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class TypeAccessor
|
internal static class TypeAccessor
|
||||||
{
|
{
|
||||||
public static Action<object, object> GetSetPropertyMethod(Type type, PropertyInfo propertyInfo)
|
public static Action<object, object> GetSetPropertyMethod(PropertyInfo propertyInfo)
|
||||||
{
|
{
|
||||||
if (!propertyInfo.CanWrite || propertyInfo.GetIndexParameters().Length > 0)
|
if (!propertyInfo.CanWrite || propertyInfo.GetIndexParameters().Length > 0)
|
||||||
{
|
{
|
||||||
|
@ -7,7 +7,6 @@ using System.Threading;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Common.Events;
|
using MediaBrowser.Common.Events;
|
||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Net;
|
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Authentication;
|
using MediaBrowser.Controller.Authentication;
|
||||||
using MediaBrowser.Controller.Devices;
|
using MediaBrowser.Controller.Devices;
|
||||||
@ -25,7 +24,6 @@ using MediaBrowser.Model.Entities;
|
|||||||
using MediaBrowser.Model.Events;
|
using MediaBrowser.Model.Events;
|
||||||
using MediaBrowser.Model.Library;
|
using MediaBrowser.Model.Library;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using MediaBrowser.Model.Session;
|
using MediaBrowser.Model.Session;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
@ -53,8 +51,6 @@ namespace Emby.Server.Implementations.Session
|
|||||||
private readonly IImageProcessor _imageProcessor;
|
private readonly IImageProcessor _imageProcessor;
|
||||||
private readonly IMediaSourceManager _mediaSourceManager;
|
private readonly IMediaSourceManager _mediaSourceManager;
|
||||||
|
|
||||||
private readonly IHttpClient _httpClient;
|
|
||||||
private readonly IJsonSerializer _jsonSerializer;
|
|
||||||
private readonly IServerApplicationHost _appHost;
|
private readonly IServerApplicationHost _appHost;
|
||||||
|
|
||||||
private readonly IAuthenticationRepository _authRepo;
|
private readonly IAuthenticationRepository _authRepo;
|
||||||
@ -96,9 +92,7 @@ namespace Emby.Server.Implementations.Session
|
|||||||
IMusicManager musicManager,
|
IMusicManager musicManager,
|
||||||
IDtoService dtoService,
|
IDtoService dtoService,
|
||||||
IImageProcessor imageProcessor,
|
IImageProcessor imageProcessor,
|
||||||
IJsonSerializer jsonSerializer,
|
|
||||||
IServerApplicationHost appHost,
|
IServerApplicationHost appHost,
|
||||||
IHttpClient httpClient,
|
|
||||||
IAuthenticationRepository authRepo,
|
IAuthenticationRepository authRepo,
|
||||||
IDeviceManager deviceManager,
|
IDeviceManager deviceManager,
|
||||||
IMediaSourceManager mediaSourceManager)
|
IMediaSourceManager mediaSourceManager)
|
||||||
@ -110,9 +104,7 @@ namespace Emby.Server.Implementations.Session
|
|||||||
_musicManager = musicManager;
|
_musicManager = musicManager;
|
||||||
_dtoService = dtoService;
|
_dtoService = dtoService;
|
||||||
_imageProcessor = imageProcessor;
|
_imageProcessor = imageProcessor;
|
||||||
_jsonSerializer = jsonSerializer;
|
|
||||||
_appHost = appHost;
|
_appHost = appHost;
|
||||||
_httpClient = httpClient;
|
|
||||||
_authRepo = authRepo;
|
_authRepo = authRepo;
|
||||||
_deviceManager = deviceManager;
|
_deviceManager = deviceManager;
|
||||||
_mediaSourceManager = mediaSourceManager;
|
_mediaSourceManager = mediaSourceManager;
|
||||||
@ -347,8 +339,7 @@ namespace Emby.Server.Implementations.Session
|
|||||||
var runtimeTicks = libraryItem.RunTimeTicks;
|
var runtimeTicks = libraryItem.RunTimeTicks;
|
||||||
|
|
||||||
MediaSourceInfo mediaSource = null;
|
MediaSourceInfo mediaSource = null;
|
||||||
var hasMediaSources = libraryItem as IHasMediaSources;
|
if (libraryItem is IHasMediaSources hasMediaSources)
|
||||||
if (hasMediaSources != null)
|
|
||||||
{
|
{
|
||||||
mediaSource = await GetMediaSource(libraryItem, info.MediaSourceId, info.LiveStreamId).ConfigureAwait(false);
|
mediaSource = await GetMediaSource(libraryItem, info.MediaSourceId, info.LiveStreamId).ConfigureAwait(false);
|
||||||
|
|
||||||
@ -1841,64 +1832,49 @@ namespace Emby.Server.Implementations.Session
|
|||||||
|
|
||||||
var data = dataFn();
|
var data = dataFn();
|
||||||
|
|
||||||
var tasks = sessions.Select(session => Task.Run(async () =>
|
IEnumerable<Task> GetTasks()
|
||||||
{
|
{
|
||||||
try
|
foreach (var session in sessions)
|
||||||
{
|
{
|
||||||
await SendMessageToSession(session, name, data, cancellationToken).ConfigureAwait(false);
|
yield return SendMessageToSession(session, name, data, cancellationToken);
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
_logger.LogError("Error sending message", ex);
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}, cancellationToken)).ToArray();
|
return Task.WhenAll(GetTasks());
|
||||||
|
|
||||||
return Task.WhenAll(tasks);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task SendMessageToUserSessions<T>(List<Guid> userIds, string name, T data, CancellationToken cancellationToken)
|
public Task SendMessageToUserSessions<T>(List<Guid> userIds, string name, T data, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
CheckDisposed();
|
CheckDisposed();
|
||||||
|
|
||||||
var sessions = Sessions.Where(i => userIds.Any(i.ContainsUser)).ToList();
|
var sessions = Sessions.Where(i => userIds.Any(i.ContainsUser));
|
||||||
|
|
||||||
var tasks = sessions.Select(session => Task.Run(async () =>
|
IEnumerable<Task> GetTasks()
|
||||||
{
|
{
|
||||||
try
|
foreach (var session in sessions)
|
||||||
{
|
{
|
||||||
await SendMessageToSession(session, name, data, cancellationToken).ConfigureAwait(false);
|
yield return SendMessageToSession(session, name, data, cancellationToken);
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
_logger.LogError("Error sending message", ex);
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}, cancellationToken)).ToArray();
|
return Task.WhenAll(GetTasks());
|
||||||
|
|
||||||
return Task.WhenAll(tasks);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task SendMessageToUserDeviceSessions<T>(string deviceId, string name, T data, CancellationToken cancellationToken)
|
public Task SendMessageToUserDeviceSessions<T>(string deviceId, string name, T data, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
CheckDisposed();
|
CheckDisposed();
|
||||||
|
|
||||||
var sessions = Sessions.Where(i => string.Equals(i.DeviceId, deviceId, StringComparison.OrdinalIgnoreCase)).ToList();
|
var sessions = Sessions.Where(i => string.Equals(i.DeviceId, deviceId, StringComparison.OrdinalIgnoreCase));
|
||||||
|
|
||||||
var tasks = sessions.Select(session => Task.Run(async () =>
|
IEnumerable<Task> GetTasks()
|
||||||
{
|
{
|
||||||
try
|
foreach (var session in sessions)
|
||||||
{
|
{
|
||||||
await SendMessageToSession(session, name, data, cancellationToken).ConfigureAwait(false);
|
yield return SendMessageToSession(session, name, data, cancellationToken);
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
_logger.LogError("Error sending message", ex);
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}, cancellationToken)).ToArray();
|
return Task.WhenAll(GetTasks());
|
||||||
|
|
||||||
return Task.WhenAll(tasks);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task SendMessageToUserDeviceAndAdminSessions<T>(string deviceId, string name, T data, CancellationToken cancellationToken)
|
public Task SendMessageToUserDeviceAndAdminSessions<T>(string deviceId, string name, T data, CancellationToken cancellationToken)
|
||||||
@ -1906,23 +1882,17 @@ namespace Emby.Server.Implementations.Session
|
|||||||
CheckDisposed();
|
CheckDisposed();
|
||||||
|
|
||||||
var sessions = Sessions
|
var sessions = Sessions
|
||||||
.Where(i => string.Equals(i.DeviceId, deviceId, StringComparison.OrdinalIgnoreCase) || IsAdminSession(i))
|
.Where(i => string.Equals(i.DeviceId, deviceId, StringComparison.OrdinalIgnoreCase) || IsAdminSession(i));
|
||||||
.ToList();
|
|
||||||
|
|
||||||
var tasks = sessions.Select(session => Task.Run(async () =>
|
IEnumerable<Task> GetTasks()
|
||||||
{
|
{
|
||||||
try
|
foreach (var session in sessions)
|
||||||
{
|
{
|
||||||
await SendMessageToSession(session, name, data, cancellationToken).ConfigureAwait(false);
|
yield return SendMessageToSession(session, name, data, cancellationToken);
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
_logger.LogError("Error sending message", ex);
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}, cancellationToken)).ToArray();
|
return Task.WhenAll(GetTasks());
|
||||||
|
|
||||||
return Task.WhenAll(tasks);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsAdminSession(SessionInfo s)
|
private bool IsAdminSession(SessionInfo s)
|
||||||
|
@ -2,7 +2,6 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Controller.Playlists;
|
|
||||||
using MediaBrowser.Controller.TV;
|
using MediaBrowser.Controller.TV;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
@ -17,7 +16,6 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
public Guid? UserId { get; set; }
|
public Guid? UserId { get; set; }
|
||||||
|
|
||||||
public static ITVSeriesManager TVSeriesManager;
|
public static ITVSeriesManager TVSeriesManager;
|
||||||
public static IPlaylistManager PlaylistManager;
|
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
public string CollectionType => ViewType;
|
public string CollectionType => ViewType;
|
||||||
@ -38,6 +36,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
{
|
{
|
||||||
list.Add(Id);
|
list.Add(Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,7 +64,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
parent = LibraryManager.GetItemById(ParentId) as Folder ?? parent;
|
parent = LibraryManager.GetItemById(ParentId) as Folder ?? parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new UserViewBuilder(UserViewManager, LibraryManager, Logger, UserDataManager, TVSeriesManager, ConfigurationManager, PlaylistManager)
|
return new UserViewBuilder(UserViewManager, LibraryManager, Logger, UserDataManager, TVSeriesManager, ConfigurationManager)
|
||||||
.GetUserItems(parent, this, CollectionType, query);
|
.GetUserItems(parent, this, CollectionType, query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@ using MediaBrowser.Controller.Configuration;
|
|||||||
using MediaBrowser.Controller.Entities.Movies;
|
using MediaBrowser.Controller.Entities.Movies;
|
||||||
using MediaBrowser.Controller.Entities.TV;
|
using MediaBrowser.Controller.Entities.TV;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Controller.Playlists;
|
|
||||||
using MediaBrowser.Controller.TV;
|
using MediaBrowser.Controller.TV;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
@ -21,9 +20,14 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
private readonly IUserDataManager _userDataManager;
|
private readonly IUserDataManager _userDataManager;
|
||||||
private readonly ITVSeriesManager _tvSeriesManager;
|
private readonly ITVSeriesManager _tvSeriesManager;
|
||||||
private readonly IServerConfigurationManager _config;
|
private readonly IServerConfigurationManager _config;
|
||||||
private readonly IPlaylistManager _playlistManager;
|
|
||||||
|
|
||||||
public UserViewBuilder(IUserViewManager userViewManager, ILibraryManager libraryManager, ILogger logger, IUserDataManager userDataManager, ITVSeriesManager tvSeriesManager, IServerConfigurationManager config, IPlaylistManager playlistManager)
|
public UserViewBuilder(
|
||||||
|
IUserViewManager userViewManager,
|
||||||
|
ILibraryManager libraryManager,
|
||||||
|
ILogger logger,
|
||||||
|
IUserDataManager userDataManager,
|
||||||
|
ITVSeriesManager tvSeriesManager,
|
||||||
|
IServerConfigurationManager config)
|
||||||
{
|
{
|
||||||
_userViewManager = userViewManager;
|
_userViewManager = userViewManager;
|
||||||
_libraryManager = libraryManager;
|
_libraryManager = libraryManager;
|
||||||
@ -31,7 +35,6 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
_userDataManager = userDataManager;
|
_userDataManager = userDataManager;
|
||||||
_tvSeriesManager = tvSeriesManager;
|
_tvSeriesManager = tvSeriesManager;
|
||||||
_config = config;
|
_config = config;
|
||||||
_playlistManager = playlistManager;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public QueryResult<BaseItem> GetUserItems(Folder queryParent, Folder displayParent, string viewType, InternalItemsQuery query)
|
public QueryResult<BaseItem> GetUserItems(Folder queryParent, Folder displayParent, string viewType, InternalItemsQuery query)
|
||||||
@ -110,6 +113,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
{
|
{
|
||||||
return GetResult(GetMediaFolders(user).OfType<Folder>().SelectMany(i => i.GetChildren(user, true)), queryParent, query);
|
return GetResult(GetMediaFolders(user).OfType<Folder>().SelectMany(i => i.GetChildren(user, true)), queryParent, query);
|
||||||
}
|
}
|
||||||
|
|
||||||
return queryParent.GetItems(query);
|
return queryParent.GetItems(query);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user