private IReadOnlyDictionary <string, string> BuildThrottlingProperties(HttpContext context, IRequestInfo info) { var builder = new ThrottlingPropertiesBuilder(); if (options.AddConsumerProperty) { builder.AddConsumer(info?.ClientApplicationIdentity); } if (options.AddPriorityProperty) { builder.AddPriority(info?.Priority.ToString()); } if (options.AddMethodProperty) { builder.AddMethod(context.Request.Method); } if (options.AddUrlProperty) { builder.AddUrl(UrlNormalizer.NormalizePath(context.Request.Path)); } foreach (var additionalProperty in options.AdditionalProperties) { var(propertyName, propertyValue) = additionalProperty(context); builder.AddProperty(propertyName, propertyValue); } return(builder.Build()); }
public void Should_correctly_add_all_well_known_properties() { var properties = builder .AddConsumer("nginx") .AddPriority("ordinary") .AddMethod("GET") .AddUrl("/users") .Build(); properties.Should().HaveCount(4); properties[WellKnownThrottlingProperties.Consumer].Should().Be("nginx"); properties[WellKnownThrottlingProperties.Priority].Should().Be("ordinary"); properties[WellKnownThrottlingProperties.Method].Should().Be("GET"); properties[WellKnownThrottlingProperties.Url].Should().Be("/users"); }