package play.mvc.results;
import play.exceptions.UnexpectedException;
import play.mvc.Http;
import play.mvc.Http.Request;
import play.mvc.Http.Response;
/**
* 302 Redirect
*/
public class Redirect extends Result {
public String url;
public int code = Http.StatusCode.FOUND;
public Redirect(String url) {
this.url = url;
}
public Redirect(String url,boolean permanent) {
this.url = url;
if (permanent)
this.code = Http.StatusCode.MOVED;
}
public Redirect(String url,int code) {
this.url = url;
this.code=code;
}
public void apply(Request request, Response response) {
try {
if (url.startsWith("http")) {
//
} else if (url.startsWith("/")) {
url = String.format("http%s://%s%s%s", request.secure ? "s" : "", request.domain, (request.port == 80 || request.port == 443) ? "" : ":" + request.port, url);
} else {
url = String.format("http%s://%s%s%s%s", request.secure ? "s" : "", request.domain, (request.port == 80 || request.port == 443) ? "" : ":" + request.port, request.path, request.path.endsWith("/") ? url : "/" + url);
}
response.status = code;
response.setHeader("Location", url);
} catch (Exception e) {
throw new UnexpectedException(e);
}
}
}