aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server/Filters/ParameterObsoleteFilter.cs
blob: e54044d0e997d8379f892b0fd4209b2ff03e0d3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using System.Linq;
using Jellyfin.Api.Attributes;
using Microsoft.AspNetCore.Mvc.ApiExplorer;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;

namespace Jellyfin.Server.Filters
{
    /// <summary>
    /// Mark parameter as deprecated if it has the <see cref="ParameterObsoleteAttribute"/>.
    /// </summary>
    public class ParameterObsoleteFilter : IOperationFilter
    {
        /// <inheritdoc />
        public void Apply(OpenApiOperation operation, OperationFilterContext context)
        {
            foreach (var parameterDescription in context.ApiDescription.ParameterDescriptions)
            {
                if (parameterDescription
                    .CustomAttributes()
                    .OfType<ParameterObsoleteAttribute>()
                    .Any())
                {
                    foreach (var parameter in operation.Parameters)
                    {
                        if (parameter.Name.Equals(parameterDescription.Name, StringComparison.Ordinal))
                        {
                            parameter.Deprecated = true;
                            break;
                        }
                    }
                }
            }
        }
    }
}