SnapshotPushPostbackHandler.java 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package uk.ac.ic.wlgitbridge.application;
  2. import org.eclipse.jetty.server.Request;
  3. import org.eclipse.jetty.server.handler.AbstractHandler;
  4. import uk.ac.ic.wlgitbridge.bridge.WriteLatexDataSource;
  5. import uk.ac.ic.wlgitbridge.writelatex.api.request.push.UnexpectedPostbackException;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import java.io.BufferedReader;
  10. import java.io.IOException;
  11. /**
  12. * Created by Winston on 16/11/14.
  13. */
  14. public class SnapshotPushPostbackHandler extends AbstractHandler {
  15. private final WriteLatexDataSource writeLatexDataSource;
  16. public SnapshotPushPostbackHandler(WriteLatexDataSource writeLatexDataSource) {
  17. this.writeLatexDataSource = writeLatexDataSource;
  18. }
  19. @Override
  20. public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
  21. if (request.getMethod().equals("POST") && request.getPathInfo().endsWith("postback")) {
  22. String contents = getContentsOfReader(request.getReader());
  23. String[] parts = request.getRequestURI().split("/");
  24. if (parts.length < 4) {
  25. throw new ServletException();
  26. }
  27. String projectName = parts[1];
  28. String postbackKey = parts[2];
  29. System.out.println("Postback received for project: " + projectName);
  30. SnapshotPushPostbackContents postbackContents = new SnapshotPushPostbackContents(writeLatexDataSource, projectName, postbackKey, contents);
  31. try {
  32. postbackContents.processPostback();
  33. } catch (UnexpectedPostbackException e) {
  34. throw new ServletException();
  35. }
  36. baseRequest.setHandled(true);
  37. }
  38. }
  39. private static String getContentsOfReader(BufferedReader reader) throws IOException {
  40. StringBuilder sb = new StringBuilder();
  41. for (String line; (line = reader.readLine()) != null; ) {
  42. sb.append(line);
  43. }
  44. return sb.toString();
  45. }
  46. }