- package net.hellmann.platform.authproxy.proxy.filter;
- import com.netflix.util.Pair;
- import com.netflix.zuul.ZuulFilter;
- import com.netflix.zuul.context.RequestContext;
- import org.springframework.stereotype.Component;
- import org.springframework.web.util.UrlPathHelper;
- import java.util.Optional;
- @Component
- public class LocationHeaderRewritingFilter extends ZuulFilter {
- private final UrlPathHelper urlPathHelper = new UrlPathHelper();
- @Override
- public String filterType() {
- return "post";
- }
- @Override
- public int filterOrder() {
- return 100;
- }
- @Override
- public boolean shouldFilter() {
- return extractLocationHeader(RequestContext.getCurrentContext()).isPresent();
- }
- @Override
- public Object run() {
- RequestContext ctx = RequestContext.getCurrentContext();
- Pair<String, String> lh = extractLocationHeader(ctx).get();
- lh.setSecond(lh.second().replace("http://", "https://"));
- return null;
- }
- private Optional<Pair<String, String>> extractLocationHeader(RequestContext ctx) {
- return ctx.getZuulResponseHeaders().stream().filter(p -> "Location".equals(p.first())).findFirst();
- }
- }