From 2358bc346fcc43a00d878e5b80df6a0d3c6c0f41 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 29 Oct 2014 21:17:31 -0400 Subject: [PATCH] add server id to dto's --- .../ApiClient/ServerCredentials.cs | 2 ++ MediaBrowser.Model/ApiClient/ServerInfo.cs | 4 ++- .../Connect/ConnectUserServer.cs | 1 + MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs | 9 ++++++- MediaBrowser.Model/LiveTv/ChannelInfoDto.cs | 10 ++++++-- MediaBrowser.Model/LiveTv/ProgramInfoDto.cs | 8 +++++- .../LiveTv/RecordingGroupDto.cs | 13 +++++++--- MediaBrowser.Model/LiveTv/RecordingInfoDto.cs | 8 +++++- .../LiveTv/LiveTvDtoService.cs | 22 ++++++++++------ .../LiveTv/LiveTvManager.cs | 7 +++--- .../ApplicationHost.cs | 2 +- .../thirdparty/apiclient/connectionmanager.js | 25 +++++++++++-------- Nuget/MediaBrowser.Common.Internal.nuspec | 4 +-- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Model.Signed.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 +-- 16 files changed, 86 insertions(+), 37 deletions(-) diff --git a/MediaBrowser.Model/ApiClient/ServerCredentials.cs b/MediaBrowser.Model/ApiClient/ServerCredentials.cs index 4999062948..56bf5cc185 100644 --- a/MediaBrowser.Model/ApiClient/ServerCredentials.cs +++ b/MediaBrowser.Model/ApiClient/ServerCredentials.cs @@ -35,6 +35,8 @@ public void AddOrUpdateServer(ServerInfo server) // Merge the data existing.DateLastAccessed = new[] { existing.DateLastAccessed, server.DateLastAccessed }.Max(); + existing.UserLinkType = server.UserLinkType; + if (!string.IsNullOrEmpty(server.AccessToken)) { existing.AccessToken = server.AccessToken; diff --git a/MediaBrowser.Model/ApiClient/ServerInfo.cs b/MediaBrowser.Model/ApiClient/ServerInfo.cs index 299e3015c4..0570647e9b 100644 --- a/MediaBrowser.Model/ApiClient/ServerInfo.cs +++ b/MediaBrowser.Model/ApiClient/ServerInfo.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Model.System; +using MediaBrowser.Model.Connect; +using MediaBrowser.Model.System; using System; using System.Collections.Generic; @@ -15,6 +16,7 @@ public class ServerInfo public List WakeOnLanInfos { get; set; } public DateTime DateLastAccessed { get; set; } public String ExchangeToken { get; set; } + public UserLinkType? UserLinkType { get; set; } public ServerInfo() { diff --git a/MediaBrowser.Model/Connect/ConnectUserServer.cs b/MediaBrowser.Model/Connect/ConnectUserServer.cs index b48a132638..caa6ebb145 100644 --- a/MediaBrowser.Model/Connect/ConnectUserServer.cs +++ b/MediaBrowser.Model/Connect/ConnectUserServer.cs @@ -9,5 +9,6 @@ public class ConnectUserServer public string AccessKey { get; set; } public string SystemId { get; set; } public string LocalAddress { get; set; } + public string UserType { get; set; } } } diff --git a/MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs b/MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs index 27001f7215..49e5724181 100644 --- a/MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs +++ b/MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs @@ -1,10 +1,11 @@ using System; using System.ComponentModel; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Extensions; namespace MediaBrowser.Model.LiveTv { - public class BaseTimerInfoDto : IHasPropertyChangedEvent + public class BaseTimerInfoDto : IHasPropertyChangedEvent, IHasServerId { /// /// Occurs when a property value changes. @@ -16,6 +17,12 @@ public class BaseTimerInfoDto : IHasPropertyChangedEvent /// public string Id { get; set; } + /// + /// Gets or sets the server identifier. + /// + /// The server identifier. + public string ServerId { get; set; } + /// /// Gets or sets the external identifier. /// diff --git a/MediaBrowser.Model/LiveTv/ChannelInfoDto.cs b/MediaBrowser.Model/LiveTv/ChannelInfoDto.cs index 351378eea1..667ad4f14a 100644 --- a/MediaBrowser.Model/LiveTv/ChannelInfoDto.cs +++ b/MediaBrowser.Model/LiveTv/ChannelInfoDto.cs @@ -13,14 +13,20 @@ namespace MediaBrowser.Model.LiveTv /// Class ChannelInfoDto /// [DebuggerDisplay("Name = {Name}, Number = {Number}")] - public class ChannelInfoDto : IHasPropertyChangedEvent, IItemDto + public class ChannelInfoDto : IHasPropertyChangedEvent, IItemDto, IHasServerId { /// /// Gets or sets the name. /// /// The name. public string Name { get; set; } - + + /// + /// Gets or sets the server identifier. + /// + /// The server identifier. + public string ServerId { get; set; } + /// /// Gets or sets the identifier. /// diff --git a/MediaBrowser.Model/LiveTv/ProgramInfoDto.cs b/MediaBrowser.Model/LiveTv/ProgramInfoDto.cs index 50881f72fe..97cd91b2cb 100644 --- a/MediaBrowser.Model/LiveTv/ProgramInfoDto.cs +++ b/MediaBrowser.Model/LiveTv/ProgramInfoDto.cs @@ -11,7 +11,7 @@ namespace MediaBrowser.Model.LiveTv { [DebuggerDisplay("Name = {Name}, StartTime = {StartDate}, EndTime = {EndDate}")] - public class ProgramInfoDto : IHasPropertyChangedEvent, IItemDto + public class ProgramInfoDto : IHasPropertyChangedEvent, IItemDto, IHasServerId { /// /// Id of the program. @@ -24,6 +24,12 @@ public class ProgramInfoDto : IHasPropertyChangedEvent, IItemDto /// The primary image aspect ratio. public double? PrimaryImageAspectRatio { get; set; } + /// + /// Gets or sets the server identifier. + /// + /// The server identifier. + public string ServerId { get; set; } + /// /// Gets or sets the original primary image aspect ratio. /// diff --git a/MediaBrowser.Model/LiveTv/RecordingGroupDto.cs b/MediaBrowser.Model/LiveTv/RecordingGroupDto.cs index 07c5ac32f9..8a0b488cc5 100644 --- a/MediaBrowser.Model/LiveTv/RecordingGroupDto.cs +++ b/MediaBrowser.Model/LiveTv/RecordingGroupDto.cs @@ -1,6 +1,7 @@ -using System.ComponentModel; -using System.Diagnostics; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Extensions; +using System.ComponentModel; +using System.Diagnostics; namespace MediaBrowser.Model.LiveTv { @@ -8,8 +9,14 @@ namespace MediaBrowser.Model.LiveTv /// Class RecordingGroupDto. /// [DebuggerDisplay("Name = {Name}, Count = {RecordingCount}")] - public class RecordingGroupDto : IHasPropertyChangedEvent + public class RecordingGroupDto : IHasPropertyChangedEvent, IHasServerId { + /// + /// Gets or sets the server identifier. + /// + /// The server identifier. + public string ServerId { get; set; } + /// /// Gets or sets the name. /// diff --git a/MediaBrowser.Model/LiveTv/RecordingInfoDto.cs b/MediaBrowser.Model/LiveTv/RecordingInfoDto.cs index 43ae9681e3..15378a9af1 100644 --- a/MediaBrowser.Model/LiveTv/RecordingInfoDto.cs +++ b/MediaBrowser.Model/LiveTv/RecordingInfoDto.cs @@ -11,7 +11,7 @@ namespace MediaBrowser.Model.LiveTv { [DebuggerDisplay("Name = {Name}, ChannelName = {ChannelName}")] - public class RecordingInfoDto : IHasPropertyChangedEvent, IItemDto + public class RecordingInfoDto : IHasPropertyChangedEvent, IItemDto, IHasServerId { /// /// Id of the recording. @@ -24,6 +24,12 @@ public class RecordingInfoDto : IHasPropertyChangedEvent, IItemDto /// The primary image aspect ratio. public double? PrimaryImageAspectRatio { get; set; } + /// + /// Gets or sets the server identifier. + /// + /// The server identifier. + public string ServerId { get; set; } + /// /// Gets or sets the original primary image aspect ratio. /// diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs index 9c69e656d7..371619c084 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.Extensions; +using MediaBrowser.Common; +using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; @@ -22,13 +23,15 @@ public class LiveTvDtoService private readonly IUserDataManager _userDataManager; private readonly IDtoService _dtoService; + private readonly IApplicationHost _appHost; - public LiveTvDtoService(IDtoService dtoService, IUserDataManager userDataManager, IImageProcessor imageProcessor, ILogger logger) + public LiveTvDtoService(IDtoService dtoService, IUserDataManager userDataManager, IImageProcessor imageProcessor, ILogger logger, IApplicationHost appHost) { _dtoService = dtoService; _userDataManager = userDataManager; _imageProcessor = imageProcessor; _logger = logger; + _appHost = appHost; } public TimerInfoDto GetTimerInfoDto(TimerInfo info, ILiveTvService service, LiveTvProgram program, LiveTvChannel channel) @@ -53,7 +56,8 @@ public TimerInfoDto GetTimerInfoDto(TimerInfo info, ILiveTvService service, Live ServiceName = service.Name, ExternalProgramId = info.ProgramId, Priority = info.Priority, - RunTimeTicks = (info.EndDate - info.StartDate).Ticks + RunTimeTicks = (info.EndDate - info.StartDate).Ticks, + ServerId = _appHost.SystemId }; if (!string.IsNullOrEmpty(info.ProgramId)) @@ -99,7 +103,8 @@ public SeriesTimerInfoDto GetSeriesTimerInfoDto(SeriesTimerInfo info, ILiveTvSer ExternalChannelId = info.ChannelId, ExternalProgramId = info.ProgramId, ServiceName = service.Name, - ChannelName = channelName + ChannelName = channelName, + ServerId = _appHost.SystemId }; if (!string.IsNullOrEmpty(info.ChannelId)) @@ -219,7 +224,8 @@ public RecordingInfoDto GetRecordingInfoDto(ILiveTvRecording recording, LiveTvCh RunTimeTicks = (info.EndDate - info.StartDate).Ticks, OriginalAirDate = info.OriginalAirDate, - MediaSources = recording.GetMediaSources(true).ToList() + MediaSources = recording.GetMediaSources(true).ToList(), + ServerId = _appHost.SystemId }; dto.MediaStreams = dto.MediaSources.SelectMany(i => i.MediaStreams).ToList(); @@ -314,7 +320,8 @@ public ChannelInfoDto GetChannelInfoDto(LiveTvChannel info, LiveTvProgram curren Id = info.Id.ToString("N"), MediaType = info.MediaType, ExternalId = info.ExternalId, - MediaSources = info.GetMediaSources(true).ToList() + MediaSources = info.GetMediaSources(true).ToList(), + ServerId = _appHost.SystemId }; if (user != null) @@ -368,7 +375,8 @@ public ProgramInfoDto GetProgramInfoDto(LiveTvProgram item, LiveTvChannel channe IsKids = item.IsKids, IsPremiere = item.IsPremiere, Type = "Program", - MediaType = item.MediaType + MediaType = item.MediaType, + ServerId = _appHost.SystemId }; if (item.EndDate.HasValue) diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index 17ccadd185..1f8e78c488 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.Configuration; +using MediaBrowser.Common; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Common.ScheduledTasks; @@ -60,7 +61,7 @@ public class LiveTvManager : ILiveTvManager, IDisposable private readonly SemaphoreSlim _refreshSemaphore = new SemaphoreSlim(1, 1); - public LiveTvManager(IServerConfigurationManager config, IFileSystem fileSystem, ILogger logger, IItemRepository itemRepo, IImageProcessor imageProcessor, IUserDataManager userDataManager, IDtoService dtoService, IUserManager userManager, ILibraryManager libraryManager, ITaskManager taskManager, ILocalizationManager localization, IJsonSerializer jsonSerializer) + public LiveTvManager(IApplicationHost appHost, IServerConfigurationManager config, IFileSystem fileSystem, ILogger logger, IItemRepository itemRepo, IImageProcessor imageProcessor, IUserDataManager userDataManager, IDtoService dtoService, IUserManager userManager, ILibraryManager libraryManager, ITaskManager taskManager, ILocalizationManager localization, IJsonSerializer jsonSerializer) { _config = config; _fileSystem = fileSystem; @@ -74,7 +75,7 @@ public LiveTvManager(IServerConfigurationManager config, IFileSystem fileSystem, _dtoService = dtoService; _userDataManager = userDataManager; - _tvDtoService = new LiveTvDtoService(dtoService, userDataManager, imageProcessor, logger); + _tvDtoService = new LiveTvDtoService(dtoService, userDataManager, imageProcessor, logger, appHost); } /// diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index 86a2b2bb94..7eeb527ce6 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -530,7 +530,7 @@ protected override async Task RegisterResources(IProgress progress) var playlistManager = new PlaylistManager(LibraryManager, FileSystemManager, LibraryMonitor, LogManager.GetLogger("PlaylistManager"), UserManager); RegisterSingleInstance(playlistManager); - LiveTvManager = new LiveTvManager(ServerConfigurationManager, FileSystemManager, Logger, ItemRepository, ImageProcessor, UserDataManager, DtoService, UserManager, LibraryManager, TaskManager, LocalizationManager, JsonSerializer); + LiveTvManager = new LiveTvManager(this, ServerConfigurationManager, FileSystemManager, Logger, ItemRepository, ImageProcessor, UserDataManager, DtoService, UserManager, LibraryManager, TaskManager, LocalizationManager, JsonSerializer); RegisterSingleInstance(LiveTvManager); UserViewManager = new UserViewManager(LibraryManager, LocalizationManager, FileSystemManager, UserManager, ChannelManager, LiveTvManager, ApplicationPaths, playlistManager); diff --git a/MediaBrowser.WebDashboard/dashboard-ui/thirdparty/apiclient/connectionmanager.js b/MediaBrowser.WebDashboard/dashboard-ui/thirdparty/apiclient/connectionmanager.js index b9673050c0..5abbcbd213 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/thirdparty/apiclient/connectionmanager.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/thirdparty/apiclient/connectionmanager.js @@ -392,10 +392,9 @@ self.logout = function () { - var i, length; var promises = []; - for (i = 0, length = apiClients.length; i < length; i++) { + for (var i = 0, length = apiClients.length; i < length; i++) { var apiClient = apiClients[i]; @@ -404,16 +403,21 @@ } } - var done = function () { + return $.when(promises).done(function () { var credentials = credentialProvider.credentials(); - for (i = 0, length = credentials.servers.length; i < length; i++) { - credentials.servers[i].UserId = null; - credentials.servers[i].AccessToken = null; - credentials.servers[i].ExchangeToken = null; + var servers = credentials.servers.filter(function (u) { + return u.UserLinkType != "Guest"; + }); + + for (var j = 0, numServers = servers.length; j < numServers; j++) { + servers[j].UserId = null; + servers[j].AccessToken = null; + servers[j].ExchangeToken = null; } + credentials.servers = servers; credentials.ConnectAccessToken = null; credentials.ConnectUserId = null; @@ -422,9 +426,7 @@ connectUser = null; $(self).trigger('signedout'); - }; - - return $.when(promises).done(done); + }); }; self.connectUserId = function () { @@ -458,7 +460,8 @@ Id: i.SystemId, Name: i.Name, RemoteAddress: i.Url, - LocalAddress: null + LocalAddress: i.LocalAddress, + UserLinkType: (i.UserType || '').toLowerCase() == "guest" ? "Guest" : "LinkedUser" }; }); diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index e1aec93a39..b574b635f7 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.502 + 3.0.503 MediaBrowser.Common.Internal Luke ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption. Copyright © Media Browser 2013 - + diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index e467bae2d1..e8f156e7ef 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.502 + 3.0.503 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index 093eb066e8..80d26a29d6 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.502 + 3.0.503 MediaBrowser.Model - Signed Edition Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index ca8aa13fa4..739041e3ef 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.502 + 3.0.503 Media Browser.Server.Core Media Browser Team ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains core components required to build plugins for Media Browser Server. Copyright © Media Browser 2013 - +