| 1234567891011121314151617181920212223242526272829303132333435363738 | using System.Threading.Tasks;using Microsoft.AspNetCore.Http;using Microsoft.AspNetCore.Http.Features;namespace Jellyfin.Api.Middleware;/// <summary>/// URL decodes the querystring before binding./// </summary>public class QueryStringDecodingMiddleware{    private readonly RequestDelegate _next;    /// <summary>    /// Initializes a new instance of the <see cref="QueryStringDecodingMiddleware"/> class.    /// </summary>    /// <param name="next">The next delegate in the pipeline.</param>    public QueryStringDecodingMiddleware(RequestDelegate next)    {        _next = next;    }    /// <summary>    /// Executes the middleware action.    /// </summary>    /// <param name="httpContext">The current HTTP context.</param>    /// <returns>The async task.</returns>    public async Task Invoke(HttpContext httpContext)    {        var feature = httpContext.Features.Get<IQueryFeature>();        if (feature is not null)        {            httpContext.Features.Set<IQueryFeature>(new UrlDecodeQueryFeature(feature));        }        await _next(httpContext).ConfigureAwait(false);    }}
 |