package org.caudexorigo.http.netty4;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.FullHttpResponse;
import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpResponseStatus;
public class RedirectAction extends HttpAction
{
private final String path;
private final HttpResponseStatus default_status;
public RedirectAction(String path)
{
this(path, HttpResponseStatus.FOUND);
}
public RedirectAction(String path, HttpResponseStatus status)
{
super();
this.path = path;
if (status.code() < 300 || status.code() > 310)
{
throw new IllegalArgumentException("Invalid status for redirect handler");
}
this.default_status = status;
}
@Override
public void service(ChannelHandlerContext ctx, FullHttpRequest request, FullHttpResponse rsp)
{
rsp.setStatus(this.default_status);
rsp.headers().add(HttpHeaders.Names.LOCATION, path);
}
}