// We don't provide a 303 service for those, only browsable pages.
if (!controller.isHosted()) return false;
response.addHeader("Vary", "Accept, User-Agent");
ContentTypeNegotiator negotiator = PubbyNegotiator.getPubbyNegotiator();
MediaRangeSpec bestMatch = negotiator.getBestMatch(
request.getHeader("Accept"), request.getHeader("User-Agent"));
if (bestMatch == null) {
response.setStatus(406);
response.setContentType("text/plain");
response.getOutputStream().println(
"406 Not Acceptable: The requested data format is not supported. " +
"Only HTML and RDF are available.");
return true;
}
response.setStatus(303);
response.setContentType("text/plain");
String location;
if ("text/html".equals(bestMatch.getMediaType())) {
location = controller.getPageURL();
} else {
location = controller.getDataURL();
}
response.addHeader("Location", IRIEncoder.toURI(location));