diff options
| author | David <daullmer@gmail.com> | 2020-06-21 18:00:04 +0200 |
|---|---|---|
| committer | David <daullmer@gmail.com> | 2020-06-21 18:00:04 +0200 |
| commit | fae510308e9b3e5022e8d9b67b07f1a5cda026b0 (patch) | |
| tree | 71854969d6d7955be0c180709a336c2a2fd75d2f | |
| parent | 9a223b7359305ab718b744394688e1d948b56686 (diff) | |
Add try catch block
| -rw-r--r-- | Jellyfin.Api/Controllers/DashboardController.cs | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/Jellyfin.Api/Controllers/DashboardController.cs b/Jellyfin.Api/Controllers/DashboardController.cs index 21c320a49..6f162aacc 100644 --- a/Jellyfin.Api/Controllers/DashboardController.cs +++ b/Jellyfin.Api/Controllers/DashboardController.cs @@ -14,6 +14,7 @@ using MediaBrowser.Model.Plugins; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; namespace Jellyfin.Api.Controllers { @@ -22,6 +23,7 @@ namespace Jellyfin.Api.Controllers /// </summary> public class DashboardController : BaseJellyfinApiController { + private readonly ILogger<DashboardController> _logger; private readonly IServerApplicationHost _appHost; private readonly IConfiguration _appConfig; private readonly IServerConfigurationManager _serverConfigurationManager; @@ -30,16 +32,19 @@ namespace Jellyfin.Api.Controllers /// <summary> /// Initializes a new instance of the <see cref="DashboardController"/> class. /// </summary> + /// <param name="logger">Instance of <see cref="ILogger{DashboardController}"/> interface.</param> /// <param name="appHost">Instance of <see cref="IServerApplicationHost"/> interface.</param> /// <param name="appConfig">Instance of <see cref="IConfiguration"/> interface.</param> /// <param name="resourceFileManager">Instance of <see cref="IResourceFileManager"/> interface.</param> /// <param name="serverConfigurationManager">Instance of <see cref="IServerConfigurationManager"/> interface.</param> public DashboardController( + ILogger<DashboardController> logger, IServerApplicationHost appHost, IConfiguration appConfig, IResourceFileManager resourceFileManager, IServerConfigurationManager serverConfigurationManager) { + _logger = logger; _appHost = appHost; _appConfig = appConfig; _resourceFileManager = resourceFileManager; @@ -63,7 +68,7 @@ namespace Jellyfin.Api.Controllers [HttpGet("/web/ConfigurationPages")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] - public ActionResult<IEnumerable<ConfigurationPageInfo>> GetConfigurationPages( + public ActionResult<IEnumerable<ConfigurationPageInfo?>> GetConfigurationPages( [FromQuery] bool? enableInMainMenu, [FromQuery] ConfigurationPageType? pageType) { @@ -79,7 +84,15 @@ namespace Jellyfin.Api.Controllers // Don't allow a failing plugin to fail them all var configPages = pages.Select(p => { - return new ConfigurationPageInfo(p); + try + { + return new ConfigurationPageInfo(p); + } + catch (Exception ex) + { + _logger.LogError(ex, "Error getting plugin information from {Plugin}", p.GetType().Name); + return null; + } }) .Where(i => i != null) .ToList(); @@ -88,12 +101,12 @@ namespace Jellyfin.Api.Controllers if (pageType.HasValue) { - configPages = configPages.Where(p => p.ConfigurationPageType == pageType).ToList(); + configPages = configPages.Where(p => p!.ConfigurationPageType == pageType).ToList(); } if (enableInMainMenu.HasValue) { - configPages = configPages.Where(p => p.EnableInMainMenu == enableInMainMenu.Value).ToList(); + configPages = configPages.Where(p => p!.EnableInMainMenu == enableInMainMenu.Value).ToList(); } return configPages; |
