package edu.ncsu.dlf.servlet;
import java.awt.GraphicsEnvironment;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import edu.ncsu.dlf.database.DBAbstraction;
import edu.ncsu.dlf.database.DatabaseFactory;
import edu.ncsu.dlf.model.Review;
import edu.ncsu.dlf.utils.JSONUtils;
import org.eclipse.egit.github.core.User;
import org.eclipse.egit.github.core.client.GitHubClient;
import org.eclipse.egit.github.core.service.UserService;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class StatusServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Live on "+System.getenv("OPENSHIFT_APP_DNS"));
System.out.println("Is AWT headless: "+GraphicsEnvironment.isHeadless());
DBAbstraction database = DatabaseFactory.getDatabase();
GitHubClient client = new GitHubClient();
client.setOAuth2Token(req.getParameter("access_token"));
UserService userService = new UserService(client);
User user = userService.getUser();
resp.setContentType("application/json");
try {
JSONObject json = new JSONObject();
List<Review> reviewsWhereUserIsRequester = database.getReviewsWhereUserIsRequester(user);
List<Review> reviewsWhereUserIsReviewer = database.getReviewsWhereUserIsReviewer(user);
json.put("reviewsWhereUserIsReviewer", JSONUtils.toJSON(reviewsWhereUserIsReviewer));
json.put("reviewsWhereUserIsRequester", JSONUtils.toJSON(reviewsWhereUserIsRequester));
resp.getWriter().write(json.toString(2));
} catch(Exception e) {
e.printStackTrace();
System.out.println("Trying to recover and send empty arrays");
try {
JSONObject json = new JSONObject();
json.put("reviewsWhereUserIsReviewer", new JSONArray());
json.put("reviewsWhereUserIsRequester", new JSONArray());
resp.getWriter().write(json.toString(2));
} catch (JSONException je) {
je.printStackTrace();
resp.sendError(500);
}
}
}
}