/
aprogrammer
/
reverse-proxy-ms-yarp
Обзор
Документация
Войти
/
aprogrammer
/
reverse-proxy-ms-yarp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/ReverseProxy/Configuration/RouteValidators/QueryParametersValidator.cs
45 строк
2 KB
Lars Johansen
Refactor ConfigValidator (#2293)
23 ноя 2023, 01:16
Не верифицирован
23 ноя 2023, 01:16
4e32b6b
Код
Авторство
О чём код?
using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Yarp.ReverseProxy.Configuration.RouteValidators; internal sealed class QueryParametersValidator : IRouteValidator { public ValueTask ValidateAsync(RouteConfig routeConfig, IList<Exception> errors) { var route = routeConfig.Match; if (route.QueryParameters is null) { // Query Parameters are optional return ValueTask.CompletedTask; } foreach (var queryParameter in route.QueryParameters) { if (queryParameter is null) { errors.Add(new ArgumentException($"A null route query parameter has been set for route '{routeConfig.RouteId}'.")); continue; } if (string.IsNullOrEmpty(queryParameter.Name)) { errors.Add(new ArgumentException($"A null or empty route query parameter name has been set for route '{routeConfig.RouteId}'.")); } if (queryParameter.Mode != QueryParameterMatchMode.Exists && (queryParameter.Values is null || queryParameter.Values.Count == 0)) { errors.Add(new ArgumentException($"No query parameter values were set on route query parameter '{queryParameter.Name}' for route '{routeConfig.RouteId}'.")); } if (queryParameter.Mode == QueryParameterMatchMode.Exists && queryParameter.Values?.Count > 0) { errors.Add(new ArgumentException($"Query parameter values where set when using mode '{nameof(QueryParameterMatchMode.Exists)}' on route query parameter '{queryParameter.Name}' for route '{routeConfig.RouteId}'.")); } } return ValueTask.CompletedTask; } }