package codeine.servlets.api_servlets.angular;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import codeine.api.NodeGetter;
import codeine.api.NodeWithMonitorsInfo;
import codeine.configuration.Links;
import codeine.model.Constants;
import codeine.servlet.AbstractApiServlet;
import codeine.utils.network.HttpUtils;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.google.inject.Inject;
public class MonitorStatusApiServlet extends AbstractApiServlet {
private static final Logger log = Logger
.getLogger(MonitorStatusApiServlet.class);
private static final long serialVersionUID = 1L;
@Inject private NodeGetter nodesGetter;
@Inject private Links links;
@Inject private Gson gson;
@Override
protected boolean checkPermissions(HttpServletRequest request) {
return canReadProject(request);
}
@Override
protected void myGet(HttpServletRequest request, HttpServletResponse response) {
String projectName = getParameter(request, Constants.UrlParameters.PROJECT_NAME);
String nodeName = getParameter(request, Constants.UrlParameters.NODE);
String monitorName = getParameter(request, Constants.UrlParameters.MONITOR);
NodeWithMonitorsInfo node = nodesGetter.getNodeByNameOrNull(projectName, nodeName);
String peerMonitorResultLink = links.getPeerMonitorResultLink(node.peer_address(), projectName, monitorName, nodeName);
log.info("accessing url " + peerMonitorResultLink);
String outputFromPeer = HttpUtils.doGET(peerMonitorResultLink,null, HttpUtils.MEDIUM_READ_TIMEOUT_MILLI);
// String encodeOutput = HttpUtils.encodeHTML(outputFromPeer);
MonitorExecutionResult monitorResult = null;
try {
monitorResult = gson.fromJson(outputFromPeer, MonitorExecutionResult.class);
} catch (JsonSyntaxException e) {
log.info("falling back to raw format");
monitorResult = new MonitorExecutionResult(outputFromPeer);
}
writeResponseGzipJson(monitorResult, request, response);
}
}