From 717e799640622f09f9ef3dc7ce721e4e6538b2dc Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Wed, 14 Aug 2019 15:33:13 -0500 Subject: [PATCH] Default to route attr for routeId if not defined in config. --- ...equestRateLimiterGatewayFilterFactory.java | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/RequestRateLimiterGatewayFilterFactory.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/RequestRateLimiterGatewayFilterFactory.java index 38ff8b82..6042b9d6 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/RequestRateLimiterGatewayFilterFactory.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/RequestRateLimiterGatewayFilterFactory.java @@ -22,8 +22,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.ratelimit.KeyResolver; import org.springframework.cloud.gateway.filter.ratelimit.RateLimiter; +import org.springframework.cloud.gateway.route.Route; import org.springframework.cloud.gateway.support.HasRouteId; import org.springframework.cloud.gateway.support.HttpStatusHolder; +import org.springframework.cloud.gateway.support.ServerWebExchangeUtils; import org.springframework.http.HttpStatus; import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.setResponseStatus; @@ -105,22 +107,27 @@ public class RequestRateLimiterGatewayFilterFactory extends } return chain.filter(exchange); } - return limiter.isAllowed(config.getRouteId(), key) - .flatMap(response -> { + String routeId = config.getRouteId(); + if (routeId == null) { + Route route = exchange + .getAttribute(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR); + routeId = route.getId(); + } + return limiter.isAllowed(routeId, key).flatMap(response -> { - for (Map.Entry header : response - .getHeaders().entrySet()) { - exchange.getResponse().getHeaders() - .add(header.getKey(), header.getValue()); - } + for (Map.Entry header : response.getHeaders() + .entrySet()) { + exchange.getResponse().getHeaders().add(header.getKey(), + header.getValue()); + } - if (response.isAllowed()) { - return chain.filter(exchange); - } + if (response.isAllowed()) { + return chain.filter(exchange); + } - setResponseStatus(exchange, config.getStatusCode()); - return exchange.getResponse().setComplete(); - }); + setResponseStatus(exchange, config.getStatusCode()); + return exchange.getResponse().setComplete(); + }); }); }