mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-06-01 21:31:36 +02:00
55 lines
2.1 KiB
Java
55 lines
2.1 KiB
Java
package uk.ac.ic.wlgitbridge.application;
|
|
|
|
import org.eclipse.jetty.server.Request;
|
|
import org.eclipse.jetty.server.handler.AbstractHandler;
|
|
import uk.ac.ic.wlgitbridge.bridge.WriteLatexDataSource;
|
|
import uk.ac.ic.wlgitbridge.writelatex.api.request.push.UnexpectedPostbackException;
|
|
|
|
import javax.servlet.ServletException;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.io.BufferedReader;
|
|
import java.io.IOException;
|
|
|
|
/**
|
|
* Created by Winston on 16/11/14.
|
|
*/
|
|
public class SnapshotPushPostbackHandler extends AbstractHandler {
|
|
|
|
private final WriteLatexDataSource writeLatexDataSource;
|
|
|
|
public SnapshotPushPostbackHandler(WriteLatexDataSource writeLatexDataSource) {
|
|
this.writeLatexDataSource = writeLatexDataSource;
|
|
}
|
|
|
|
@Override
|
|
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
|
|
if (request.getMethod().equals("POST") && request.getPathInfo().endsWith("postback")) {
|
|
String contents = getContentsOfReader(request.getReader());
|
|
String[] parts = request.getRequestURI().split("/");
|
|
if (parts.length < 4) {
|
|
throw new ServletException();
|
|
}
|
|
String projectName = parts[1];
|
|
String postbackKey = parts[2];
|
|
System.out.println("Postback received for project: " + projectName);
|
|
SnapshotPushPostbackContents postbackContents = new SnapshotPushPostbackContents(writeLatexDataSource, projectName, postbackKey, contents);
|
|
try {
|
|
postbackContents.processPostback();
|
|
} catch (UnexpectedPostbackException e) {
|
|
throw new ServletException();
|
|
}
|
|
baseRequest.setHandled(true);
|
|
}
|
|
}
|
|
|
|
private static String getContentsOfReader(BufferedReader reader) throws IOException {
|
|
StringBuilder sb = new StringBuilder();
|
|
for (String line; (line = reader.readLine()) != null; ) {
|
|
sb.append(line);
|
|
}
|
|
return sb.toString();
|
|
}
|
|
|
|
}
|