diff --git a/Emby.Dlna/PlayTo/Device.cs b/Emby.Dlna/PlayTo/Device.cs index 5a63be3046..b6b1c0c034 100644 --- a/Emby.Dlna/PlayTo/Device.cs +++ b/Emby.Dlna/PlayTo/Device.cs @@ -113,7 +113,7 @@ namespace Emby.Dlna.PlayTo private int GetInactiveTimerIntervalMs() { - return Timeout.Infinite; + return 60000; } public void Start() diff --git a/Emby.Dlna/PlayTo/PlayToController.cs b/Emby.Dlna/PlayTo/PlayToController.cs index e8d7c91272..95b164212e 100644 --- a/Emby.Dlna/PlayTo/PlayToController.cs +++ b/Emby.Dlna/PlayTo/PlayToController.cs @@ -48,23 +48,7 @@ namespace Emby.Dlna.PlayTo { get { - var lastDateKnownActivity = _creationTime > _device.DateLastActivity ? _creationTime : _device.DateLastActivity; - - if (DateTime.UtcNow >= lastDateKnownActivity.AddSeconds(120)) - { - try - { - // Session is inactive, mark it for Disposal and don't start the elapsed timer. - _sessionManager.ReportSessionEnded(_session.Id); - } - catch (Exception ex) - { - _logger.ErrorException("Error in ReportSessionEnded", ex); - } - return false; - } - - return _device != null; + return !_disposed && _device != null; } } diff --git a/Emby.Server.Implementations/Services/ServiceController.cs b/Emby.Server.Implementations/Services/ServiceController.cs index 4dc14a1934..3fd6d88f81 100644 --- a/Emby.Server.Implementations/Services/ServiceController.cs +++ b/Emby.Server.Implementations/Services/ServiceController.cs @@ -75,7 +75,7 @@ namespace Emby.Server.Implementations.Services var attrs = appHost.GetRouteAttributes(requestType); foreach (RouteAttribute attr in attrs) { - var restPath = new RestPath(appHost.CreateInstance, appHost.GetParseFn, requestType, attr.Path, attr.Verbs, attr.Summary); + var restPath = new RestPath(appHost.CreateInstance, appHost.GetParseFn, requestType, attr.Path, attr.Verbs, attr.IsHidden, attr.Summary, attr.Description); RegisterRestPath(restPath); } diff --git a/Emby.Server.Implementations/Services/ServicePath.cs b/Emby.Server.Implementations/Services/ServicePath.cs index df5d713747..0ca36df19d 100644 --- a/Emby.Server.Implementations/Services/ServicePath.cs +++ b/Emby.Server.Implementations/Services/ServicePath.cs @@ -51,6 +51,8 @@ namespace Emby.Server.Implementations.Services public string Path { get { return this.restPath; } } public string Summary { get; private set; } + public string Description { get; private set; } + public bool IsHidden { get; private set; } public int Priority { get; set; } //passed back to RouteAttribute @@ -91,10 +93,12 @@ namespace Emby.Server.Implementations.Services return list; } - public RestPath(Func createInstanceFn, Func> getParseFn, Type requestType, string path, string verbs, string summary = null) + public RestPath(Func createInstanceFn, Func> getParseFn, Type requestType, string path, string verbs, bool isHidden = false, string summary = null, string description = null) { this.RequestType = requestType; this.Summary = summary; + this.IsHidden = isHidden; + this.Description = description; this.restPath = path; this.Verbs = string.IsNullOrWhiteSpace(verbs) ? ServiceExecExtensions.AllVerbs : verbs.ToUpper().Split(new[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries); diff --git a/Emby.Server.Implementations/Services/SwaggerService.cs b/Emby.Server.Implementations/Services/SwaggerService.cs index 63cbb78dd5..be3b4cbba4 100644 --- a/Emby.Server.Implementations/Services/SwaggerService.cs +++ b/Emby.Server.Implementations/Services/SwaggerService.cs @@ -21,7 +21,7 @@ namespace Emby.Server.Implementations.Services public string host { get; set; } public string basePath { get; set; } public SwaggerTag[] tags { get; set; } - public Dictionary> paths { get; set; } + public IDictionary> paths { get; set; } public Dictionary definitions { get; set; } } @@ -147,16 +147,21 @@ namespace Emby.Server.Implementations.Services return new Dictionary(); } - private Dictionary> GetPaths() + private IDictionary> GetPaths() { - var paths = new Dictionary>(); + var paths = new SortedDictionary>(); - var all = ServiceController.Instance.RestPathMap.ToList(); + var all = ServiceController.Instance.RestPathMap.OrderBy(i => i.Key, StringComparer.OrdinalIgnoreCase).ToList(); foreach (var current in all) { foreach (var info in current.Value) { + if (info.IsHidden) + { + continue; + } + if (info.Path.StartsWith("/mediabrowser", StringComparison.OrdinalIgnoreCase)) { continue; @@ -191,6 +196,7 @@ namespace Emby.Server.Implementations.Services result[verb.ToLower()] = new SwaggerMethod { summary = info.Summary, + description = info.Description, produces = new[] { "application/json" diff --git a/MediaBrowser.Api/PluginService.cs b/MediaBrowser.Api/PluginService.cs index f6efe15e6d..1eea894312 100644 --- a/MediaBrowser.Api/PluginService.cs +++ b/MediaBrowser.Api/PluginService.cs @@ -82,7 +82,7 @@ namespace MediaBrowser.Api /// /// Class GetPluginSecurityInfo /// - [Route("/Plugins/SecurityInfo", "GET", Summary = "Gets plugin registration information")] + [Route("/Plugins/SecurityInfo", "GET", Summary = "Gets plugin registration information", IsHidden = true)] [Authenticated] public class GetPluginSecurityInfo : IReturn { @@ -91,13 +91,13 @@ namespace MediaBrowser.Api /// /// Class UpdatePluginSecurityInfo /// - [Route("/Plugins/SecurityInfo", "POST", Summary = "Updates plugin registration information")] + [Route("/Plugins/SecurityInfo", "POST", Summary = "Updates plugin registration information", IsHidden = true)] [Authenticated(Roles = "Admin")] public class UpdatePluginSecurityInfo : PluginSecurityInfo, IReturnVoid { } - [Route("/Plugins/RegistrationRecords/{Name}", "GET", Summary = "Gets registration status for a feature")] + [Route("/Plugins/RegistrationRecords/{Name}", "GET", Summary = "Gets registration status for a feature", IsHidden = true)] [Authenticated] public class GetRegistrationStatus { @@ -108,7 +108,7 @@ namespace MediaBrowser.Api public string Mb2Equivalent { get; set; } } - [Route("/Registrations/{Name}", "GET", Summary = "Gets registration status for a feature")] + [Route("/Registrations/{Name}", "GET", Summary = "Gets registration status for a feature", IsHidden = true)] [Authenticated] public class GetRegistration : IReturn { @@ -116,7 +116,7 @@ namespace MediaBrowser.Api public string Name { get; set; } } - [Route("/Appstore/Register", "POST", Summary = "Registers an appstore sale")] + [Route("/Appstore/Register", "POST", Summary = "Registers an appstore sale", IsHidden = true)] [Authenticated] public class RegisterAppstoreSale { diff --git a/MediaBrowser.Model/Services/RouteAttribute.cs b/MediaBrowser.Model/Services/RouteAttribute.cs index 5a39688da9..264500e605 100644 --- a/MediaBrowser.Model/Services/RouteAttribute.cs +++ b/MediaBrowser.Model/Services/RouteAttribute.cs @@ -88,6 +88,10 @@ namespace MediaBrowser.Model.Services /// public string Summary { get; set; } + public string Description { get; set; } + + public bool IsHidden { get; set; } + /// /// Gets or sets longer text to explain the behaviour of the route. /// diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs index 04298e3250..566a84da2c 100644 --- a/MediaBrowser.Server.Mono/Program.cs +++ b/MediaBrowser.Server.Mono/Program.cs @@ -127,10 +127,10 @@ namespace MediaBrowser.Server.Mono var task = appHost.Init(initProgress); - appHost.ImageProcessor.ImageEncoder = ImageEncoderHelper.GetImageEncoder(_logger, logManager, fileSystem, options, () => appHost.HttpClient, appPaths, environmentInfo); - Task.WaitAll(task); + appHost.ImageProcessor.ImageEncoder = ImageEncoderHelper.GetImageEncoder(_logger, logManager, fileSystem, options, () => appHost.HttpClient, appPaths, environmentInfo); + Console.WriteLine("Running startup tasks"); task = appHost.RunStartupTasks(); diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs index c6bbca6728..d4d0e281e7 100644 --- a/MediaBrowser.WebDashboard/Api/DashboardService.cs +++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs @@ -47,13 +47,13 @@ namespace MediaBrowser.WebDashboard.Api public string Name { get; set; } } - [Route("/web/Package", "GET")] + [Route("/web/Package", "GET", IsHidden = true)] public class GetDashboardPackage { public string Mode { get; set; } } - [Route("/robots.txt", "GET")] + [Route("/robots.txt", "GET", IsHidden = true)] public class GetRobotsTxt { } @@ -61,7 +61,7 @@ namespace MediaBrowser.WebDashboard.Api /// /// Class GetDashboardResource /// - [Route("/web/{ResourceName*}", "GET")] + [Route("/web/{ResourceName*}", "GET", IsHidden = true)] public class GetDashboardResource { /// @@ -76,7 +76,7 @@ namespace MediaBrowser.WebDashboard.Api public string V { get; set; } } - [Route("/favicon.ico", "GET")] + [Route("/favicon.ico", "GET", IsHidden = true)] public class GetFavIcon { } diff --git a/SharedVersion.cs b/SharedVersion.cs index 2798973492..e851e64880 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,3 +1,3 @@ using System.Reflection; -[assembly: AssemblyVersion("3.2.30.16")] +[assembly: AssemblyVersion("3.2.30.17")]