aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server/Filters/AdditionalModelFilter.cs
diff options
context:
space:
mode:
authorClaus Vium <cvium@users.noreply.github.com>2022-10-07 09:57:16 +0200
committerGitHub <noreply@github.com>2022-10-07 09:57:16 +0200
commit81b04ddbb54201d2e07310e3c700cca8a94d8955 (patch)
treea4e9aeb70e35b3e47a7d8af17b328e88a1c77ed0 /Jellyfin.Server/Filters/AdditionalModelFilter.cs
parent6bf71c0fd355e9c95a1e142019d9bc5cce34200d (diff)
parent14027f962ce074623fd89967ca9565bbeb785066 (diff)
Merge branch 'master' into providermanager-cleanup
Diffstat (limited to 'Jellyfin.Server/Filters/AdditionalModelFilter.cs')
-rw-r--r--Jellyfin.Server/Filters/AdditionalModelFilter.cs29
1 files changed, 28 insertions, 1 deletions
diff --git a/Jellyfin.Server/Filters/AdditionalModelFilter.cs b/Jellyfin.Server/Filters/AdditionalModelFilter.cs
index 87a59e0b4..487948f81 100644
--- a/Jellyfin.Server/Filters/AdditionalModelFilter.cs
+++ b/Jellyfin.Server/Filters/AdditionalModelFilter.cs
@@ -1,4 +1,8 @@
-using MediaBrowser.Common.Plugins;
+using System;
+using Jellyfin.Extensions;
+using Jellyfin.Server.Migrations;
+using MediaBrowser.Common.Plugins;
+using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Model.ApiClient;
using MediaBrowser.Model.Entities;
@@ -14,6 +18,19 @@ namespace Jellyfin.Server.Filters
/// </summary>
public class AdditionalModelFilter : IDocumentFilter
{
+ // Array of options that should not be visible in the api spec.
+ private static readonly Type[] _ignoredConfigurations = { typeof(MigrationOptions) };
+ private readonly IServerConfigurationManager _serverConfigurationManager;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="AdditionalModelFilter"/> class.
+ /// </summary>
+ /// <param name="serverConfigurationManager">Instance of the <see cref="IServerConfigurationManager"/> interface.</param>
+ public AdditionalModelFilter(IServerConfigurationManager serverConfigurationManager)
+ {
+ _serverConfigurationManager = serverConfigurationManager;
+ }
+
/// <inheritdoc />
public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
{
@@ -29,6 +46,16 @@ namespace Jellyfin.Server.Filters
context.SchemaGenerator.GenerateSchema(typeof(SessionMessageType), context.SchemaRepository);
context.SchemaGenerator.GenerateSchema(typeof(ServerDiscoveryInfo), context.SchemaRepository);
+
+ foreach (var configuration in _serverConfigurationManager.GetConfigurationStores())
+ {
+ if (_ignoredConfigurations.IndexOf(configuration.ConfigurationType) != -1)
+ {
+ continue;
+ }
+
+ context.SchemaGenerator.GenerateSchema(configuration.ConfigurationType, context.SchemaRepository);
+ }
}
}
}