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 lh = extractLocationHeader(ctx).get(); lh.setSecond(lh.second().replace("http://", "https://")); return null; } private Optional> extractLocationHeader(RequestContext ctx) { return ctx.getZuulResponseHeaders().stream().filter(p -> "Location".equals(p.first())).findFirst(); } }