aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server/Filters/AdditionalModelFilter.cs
diff options
context:
space:
mode:
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);
+ }
}
}
}