< Summary - Jellyfin

Information
Class: Jellyfin.Server.Filters.IgnoreEnumSchemaFilter
Assembly: jellyfin
File(s): /srv/git/jellyfin/Jellyfin.Server/Filters/IgnoreEnumSchemaFilter.cs
Line coverage
84%
Covered lines: 11
Uncovered lines: 2
Coverable lines: 13
Total lines: 47
Line coverage: 84.6%
Branch coverage
87%
Covered branches: 14
Total branches: 16
Branch coverage: 87.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 11/28/2025 - 12:11:11 AM Line coverage: 90.9% (10/11) Branch coverage: 92.8% (13/14) Total lines: 422/27/2026 - 12:13:29 AM Line coverage: 84.6% (11/13) Branch coverage: 87.5% (14/16) Total lines: 47 11/28/2025 - 12:11:11 AM Line coverage: 90.9% (10/11) Branch coverage: 92.8% (13/14) Total lines: 422/27/2026 - 12:13:29 AM Line coverage: 84.6% (11/13) Branch coverage: 87.5% (14/16) Total lines: 47

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Apply(...)87.5%171684.61%

File(s)

/srv/git/jellyfin/Jellyfin.Server/Filters/IgnoreEnumSchemaFilter.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using System.Reflection;
 5using System.Text.Json.Nodes;
 6using Jellyfin.Data.Attributes;
 7using Microsoft.OpenApi;
 8using Swashbuckle.AspNetCore.SwaggerGen;
 9
 10namespace Jellyfin.Server.Filters;
 11
 12/// <summary>
 13/// Filter to remove ignored enum values.
 14/// </summary>
 15public class IgnoreEnumSchemaFilter : ISchemaFilter
 16{
 17    /// <inheritdoc />
 18    public void Apply(IOpenApiSchema schema, SchemaFilterContext context)
 19    {
 507720        if (context.Type.IsEnum || (Nullable.GetUnderlyingType(context.Type)?.IsEnum ?? false))
 21        {
 35622            var type = context.Type.IsEnum ? context.Type : Nullable.GetUnderlyingType(context.Type);
 35623            if (type is null)
 24            {
 025                return;
 26            }
 27
 35628            if (schema is not OpenApiSchema concreteSchema)
 29            {
 030                return;
 31            }
 32
 35633            var enumOpenApiNodes = new List<JsonNode>();
 34
 803035            foreach (var enumName in Enum.GetNames(type))
 36            {
 365937                var member = type.GetMember(enumName)[0];
 365938                if (!member.GetCustomAttributes<OpenApiIgnoreEnumAttribute>().Any())
 39                {
 359940                    enumOpenApiNodes.Add(JsonValue.Create(enumName)!);
 41                }
 42            }
 43
 35644            concreteSchema.Enum = enumOpenApiNodes;
 45        }
 507746    }
 47}