package edu.harvard.iq.dataverse.api; import java.io.IOException; import java.util.logging.Logger; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; /** * Routes API calls that don't have a version number to the latest API version * * @author michael */ public class ApiRouter implements javax.servlet.Filter { private static final Logger logger = Logger.getLogger(ApiRouter.class.getName()); @Override public void init(FilterConfig fc) throws ServletException { } @Override public void doFilter(ServletRequest req, ServletResponse sr1, FilterChain fc) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; String requestUri = request.getRequestURI(); if ( requestUri.startsWith("/api/v1/") ) { fc.doFilter(req, sr1); } else { String newRequestUri = "/api/v1" + requestUri.substring(4); RequestDispatcher dsp = request.getRequestDispatcher(newRequestUri); dsp.forward(req, sr1); } } @Override public void destroy() { } }