package org.dcache.restful.errorHandling;
import org.eclipse.jetty.http.HttpStatus;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.ErrorHandler;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
*
*/
public class RestAPIExceptionHandler extends ErrorHandler
{
@Override
public void handle(String target, Request baseRequest, HttpServletRequest request,
HttpServletResponse response) throws IOException
{
int code = response.getStatus();
String message = HttpStatus.getMessage(code);
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
response.setHeader("content-type", "application/json");
if (code == 401) {
response.setHeader("WWW-Authenticate", "");
}
response.getWriter()
.append("{\"errors\": [{\"status\" : ")
.append(String.valueOf(code))
.append(", \"message\": \"")
.append(message)
.append("\"}]}");
}
}