package org.dcache.services.httpd.handlers;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Processes redirection from one URL to another.
*
* @author arossi
*/
public class RedirectHandler extends AbstractHandler {
private static final Logger logger
= LoggerFactory.getLogger(RedirectHandler.class);
private final String fromContext;
private final String toContext;
public RedirectHandler(String fromContext, String toContext ) {
if ("<home>".equals(fromContext)) {
fromContext = "/";
}
this.fromContext = fromContext;
this.toContext = toContext;
}
@Override
public void handle(String target, Request baseRequest,
HttpServletRequest request, HttpServletResponse response) throws
IOException, ServletException {
logger.debug("target: {}", target);
if (target.contains(fromContext)) {
StringBuilder targetUrl = new StringBuilder(target);
int i = targetUrl.indexOf(fromContext);
String newUrl
= targetUrl.replace(i, i + fromContext.length(),
toContext)
.toString();
logger.debug("redirected to: {}", newUrl);
response.sendRedirect(newUrl);
}
}
}