Permalink
Cannot retrieve contributors at this time
Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign up
Fetching contributors…
| package groovy | |
| import com.netflix.zuul.ZuulFilter | |
| import com.netflix.zuul.context.RequestContext | |
| import com.netflix.zuul.util.HTTPRequestUtils | |
| import java.util.logging.Logger | |
| class ABTestingFilterBean extends ZuulFilter { | |
| private static Logger logger = Logger.getLogger( ABTestingFilterBean.class.getName() ); | |
| @Override | |
| String filterType() { | |
| return "pre" | |
| } | |
| @Override | |
| int filterOrder() { | |
| return 99 | |
| } | |
| @Override | |
| boolean shouldFilter() { | |
| if( !RequestContext.currentContext.getRequest().getRequestURI().matches("/sales.*") ) | |
| { | |
| //Won't filter this request URL | |
| false | |
| } | |
| else | |
| { | |
| String caller = new HTTPRequestUtils().getHeaderValue("baggage-forwarded-for"); | |
| logger.info("Caller IP address is " + caller) | |
| int lastDigit = caller.reverse().take(1) as Integer | |
| if( lastDigit % 2 == 0 ) | |
| { | |
| //Even IP address won't be filtered | |
| false | |
| } | |
| else | |
| { | |
| //Odd IP address will be filtered | |
| true | |
| } | |
| } | |
| } | |
| @Override | |
| Object run() { | |
| println("Running filter") | |
| RequestContext.currentContext.routeHost = new URL("http://salesv2:8080") | |
| } | |
| } | |
| beans { | |
| abTestingFilterBean(ABTestingFilterBean) { | |
| new groovy.ABTestingFilterBean(); | |
| } | |
| } |