Browse Source

Added OpenAPI spec for #12880

JPVenson 2 tháng trước cách đây
mục cha
commit
aa4936c59c

+ 1 - 0
Jellyfin.Server/Extensions/ApiServiceCollectionExtensions.cs

@@ -247,6 +247,7 @@ namespace Jellyfin.Server.Extensions
                 c.AddSwaggerTypeMappings();
 
                 c.SchemaFilter<IgnoreEnumSchemaFilter>();
+                c.OperationFilter<RetryOnTemporarlyUnavailableFilter>();
                 c.OperationFilter<SecurityRequirementsOperationFilter>();
                 c.OperationFilter<FileResponseFilter>();
                 c.OperationFilter<FileRequestFilter>();

+ 36 - 0
Jellyfin.Server/Filters/RetryOnTemporarlyUnavailableFilter.cs

@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using System.Net.Http.Headers;
+using Microsoft.OpenApi.Models;
+using Swashbuckle.AspNetCore.SwaggerGen;
+
+namespace Jellyfin.Server.Filters;
+
+internal class RetryOnTemporarlyUnavailableFilter : IOperationFilter
+{
+    public void Apply(OpenApiOperation operation, OperationFilterContext context)
+    {
+        operation.Responses.Add("503", new OpenApiResponse()
+        {
+            Description = "The server is currently starting or is temporarly not available.",
+            Headers = new Dictionary<string, OpenApiHeader>()
+            {
+                {
+                    "retry-after",
+                    new() { AllowEmptyValue = true, Required = false, Description = "A hint for when to retry the operation." }
+                },
+                {
+                    "message",
+                    new() { AllowEmptyValue = true, Required = false, Description = "A short plain-text reason why the server is not available." }
+                }
+            },
+            Content = new Dictionary<string, OpenApiMediaType>()
+            {
+                {
+                    "text/html",
+                    new OpenApiMediaType()
+                }
+            }
+        });
+    }
+}