resp.sendError(403, "Error, cert authing required. Serial not found: " + serial);
return;
}
+ if (req.getMethod().equals("GET")) {
+ if (u instanceof User) {
+ processGet(req, resp, (User) u);
+ return;
+ } else {
+ resp.sendError(500, "Error, requires a User certificate.");
+ return;
+ }
+ }
if ( !req.getMethod().equals("POST")) {
resp.sendError(500, "Error, POST required.");
}
protected void process(HttpServletRequest req, HttpServletResponse resp, User u) throws IOException {
+ resp.sendError(500, "Error, Post not allowed.");
+ }
+ protected void processGet(HttpServletRequest req, HttpServletResponse resp, User u) throws IOException {
+ resp.sendError(500, "Error, Get not allowed.");
}
}
--- /dev/null
+package org.cacert.gigi.api;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.cacert.gigi.GigiApiException;
+import org.cacert.gigi.dbObjects.EmailAddress;
+import org.cacert.gigi.dbObjects.User;
+import org.cacert.gigi.localisation.Language;
+
+public class EmailReping extends APIPoint {
+
+ public static final String PATH = "/account/emails/reping";
+
+ @Override
+ protected void process(HttpServletRequest req, HttpServletResponse resp, User u) throws IOException {
+ try {
+ String email = req.getParameter("email");
+ if (email == null) {
+ resp.sendError(500, "No parameter 'email'.");
+ return;
+ }
+ for (EmailAddress e : u.getEmails()) {
+ if (e.getAddress().equals(email)) {
+ e.requestReping(Language.getInstance(u.getPreferredLocale()));
+ resp.setContentType("text/plain; charset=UTF-8");
+ return;
+ }
+ }
+ resp.sendError(500, "Error, Email address not found.");
+ } catch (IllegalArgumentException e) {
+ resp.sendError(500, "Invalid email");
+ } catch (GigiApiException e) {
+ resp.setStatus(500);
+ resp.setContentType("text/plain; charset=UTF-8");
+ e.formatPlain(resp.getWriter());
+ }
+ }
+}
--- /dev/null
+package org.cacert.gigi.api;
+
+import java.io.IOException;
+import java.util.Date;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.cacert.gigi.GigiApiException;
+import org.cacert.gigi.dbObjects.EmailAddress;
+import org.cacert.gigi.dbObjects.User;
+import org.json.JSONWriter;
+
+public class Emails extends APIPoint {
+
+ public static final String PATH = "/account/emails";
+
+ @Override
+ public void processGet(HttpServletRequest req, HttpServletResponse resp, User u) throws IOException {
+ EmailAddress[] mails = u.getEmails();
+ resp.setContentType("application/json; charset=UTF-8");
+ JSONWriter jw = new JSONWriter(resp.getWriter());
+ jw.array();
+ for (EmailAddress emailAddress : mails) {
+ Date p = emailAddress.getLastPing(true);
+ jw.object();
+ jw.key("id");
+ jw.value(emailAddress.getId());
+ jw.key("lastPing");
+ jw.value((p == null ? 0 : p.getTime()));
+ jw.key("address");
+ jw.value(emailAddress.getAddress());
+ jw.endObject();
+ }
+ jw.endArray();
+ }
+
+ @Override
+ protected void process(HttpServletRequest req, HttpServletResponse resp, User u) throws IOException {
+ try {
+ String email = req.getParameter("email");
+ if (email == null) {
+ resp.sendError(500, "No parameter 'email'.");
+ return;
+ }
+ new EmailAddress(u, email, u.getPreferredLocale());
+ } catch (IllegalArgumentException e) {
+ resp.sendError(500, "Invalid email");
+ } catch (GigiApiException e) {
+ resp.setStatus(500);
+ resp.setContentType("text/plain; charset=UTF-8");
+ e.formatPlain(resp.getWriter());
+ }
+ }
+
+}
public GigiAPI() {
api.put(CreateCertificate.PATH, new CreateCertificate());
+ api.put(Emails.PATH, new Emails());
+ api.put(EmailReping.PATH, new EmailReping());
api.put(RevokeCertificate.PATH, new RevokeCertificate());
api.put(CATSImport.PATH, new CATSImport());
api.put(CATSResolve.PATH, new CATSResolve());