X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fapi%2FGigiAPI.java;h=dbac5a881b8a82dcb0ae100c43753f57af38526f;hp=88c8da81b3a99b4c794040b155cab5ca14599390;hb=d7be034f96e06985f57d86d2779c434276b5bd4d;hpb=3ce408bed993f18cd0a17d8a65932dd4f1a5b111 diff --git a/src/org/cacert/gigi/api/GigiAPI.java b/src/org/cacert/gigi/api/GigiAPI.java index 88c8da81..dbac5a88 100644 --- a/src/org/cacert/gigi/api/GigiAPI.java +++ b/src/org/cacert/gigi/api/GigiAPI.java @@ -2,6 +2,7 @@ package org.cacert.gigi.api; import java.io.IOException; import java.io.InputStreamReader; +import java.util.HashMap; import javax.servlet.ServletException; import javax.servlet.ServletInputStream; @@ -9,24 +10,48 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.cacert.gigi.database.DatabaseConnection; +import org.cacert.gigi.database.DatabaseConnection.Link; + public class GigiAPI extends HttpServlet { - @Override - protected void service(HttpServletRequest req, HttpServletResponse resp) - throws ServletException, IOException { - String pi = req.getPathInfo(); - if (pi == null) { - return; - } - if (pi.equals("/security/csp/report")) { - ServletInputStream sis = req.getInputStream(); - InputStreamReader isr = new InputStreamReader(sis, "UTF-8"); - StringBuffer strB = new StringBuffer(); - char[] buffer = new char[4 * 1024]; - int len; - while ((len = isr.read(buffer)) > 0) { - strB.append(buffer, 0, len); - } - System.out.println(strB); - } - } + + private static final long serialVersionUID = 659963677032635817L; + + HashMap api = new HashMap<>(); + + public GigiAPI() { + api.put(CreateCertificate.PATH, new CreateCertificate()); + api.put(RevokeCertificate.PATH, new RevokeCertificate()); + api.put(CATSImport.PATH, new CATSImport()); + api.put(CATSResolve.PATH, new CATSResolve()); + } + + @Override + protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String pi = req.getPathInfo(); + if (pi == null) { + return; + } + if (pi.equals("/security/csp/report")) { + ServletInputStream sis = req.getInputStream(); + InputStreamReader isr = new InputStreamReader(sis, "UTF-8"); + StringBuffer strB = new StringBuffer(); + char[] buffer = new char[4 * 1024]; + int len; + while ((len = isr.read(buffer)) > 0) { + strB.append(buffer, 0, len); + } + System.out.println(strB); + return; + } + + APIPoint p = api.get(pi); + try (Link l = DatabaseConnection.newLink(false)) { + if (p != null) { + p.process(req, resp); + } + } catch (InterruptedException e) { + throw new Error(e); + } + } }