aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server/Filters/CachingOpenApiProvider.cs
diff options
context:
space:
mode:
authorTim Eisele <Ghost_of_Stone@web.de>2026-01-02 02:46:51 +0100
committerGitHub <noreply@github.com>2026-01-01 18:46:51 -0700
commit23b48a0d0f92706bc4f533cfa78077796ce8da61 (patch)
tree7583aab6970dc05c5286bafad820f680cabc604f /Jellyfin.Server/Filters/CachingOpenApiProvider.cs
parentd1055b0b3660d120fed332deb2535986d52d9e0f (diff)
Upgrade Swashbuckle and fix OpenAPI spec (#15886)
Diffstat (limited to 'Jellyfin.Server/Filters/CachingOpenApiProvider.cs')
-rw-r--r--Jellyfin.Server/Filters/CachingOpenApiProvider.cs16
1 files changed, 15 insertions, 1 deletions
diff --git a/Jellyfin.Server/Filters/CachingOpenApiProvider.cs b/Jellyfin.Server/Filters/CachingOpenApiProvider.cs
index b560ec50e..833b68444 100644
--- a/Jellyfin.Server/Filters/CachingOpenApiProvider.cs
+++ b/Jellyfin.Server/Filters/CachingOpenApiProvider.cs
@@ -2,6 +2,7 @@ using System;
using AsyncKeyedLock;
using Microsoft.AspNetCore.Mvc.ApiExplorer;
using Microsoft.Extensions.Caching.Memory;
+using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.Swagger;
@@ -23,6 +24,7 @@ internal sealed class CachingOpenApiProvider : ISwaggerProvider
private readonly IMemoryCache _memoryCache;
private readonly SwaggerGenerator _swaggerGenerator;
private readonly SwaggerGeneratorOptions _swaggerGeneratorOptions;
+ private readonly ILogger<CachingOpenApiProvider> _logger;
/// <summary>
/// Initializes a new instance of the <see cref="CachingOpenApiProvider"/> class.
@@ -31,15 +33,18 @@ internal sealed class CachingOpenApiProvider : ISwaggerProvider
/// <param name="apiDescriptionsProvider">The api descriptions provider.</param>
/// <param name="schemaGenerator">The schema generator.</param>
/// <param name="memoryCache">The memory cache.</param>
+ /// <param name="logger">The logger.</param>
public CachingOpenApiProvider(
IOptions<SwaggerGeneratorOptions> optionsAccessor,
IApiDescriptionGroupCollectionProvider apiDescriptionsProvider,
ISchemaGenerator schemaGenerator,
- IMemoryCache memoryCache)
+ IMemoryCache memoryCache,
+ ILogger<CachingOpenApiProvider> logger)
{
_swaggerGeneratorOptions = optionsAccessor.Value;
_swaggerGenerator = new SwaggerGenerator(_swaggerGeneratorOptions, apiDescriptionsProvider, schemaGenerator);
_memoryCache = memoryCache;
+ _logger = logger;
}
/// <inheritdoc />
@@ -61,7 +66,16 @@ internal sealed class CachingOpenApiProvider : ISwaggerProvider
throw new InvalidOperationException("OpenApi document is generating");
}
+ try
+ {
openApiDocument = _swaggerGenerator.GetSwagger(documentName);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "OpenAPI generation error");
+ throw;
+ }
+
_memoryCache.Set(CacheKey, openApiDocument, _cacheOptions);
return AdjustDocument(openApiDocument, host, basePath);
}