Pause.java

package emissary.server.api;

import emissary.core.NamespaceException;
import emissary.server.EmissaryServer;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Path("")
// context is api
public class Pause {

    private static final Logger LOG = LoggerFactory.getLogger(Pause.class);
    public static final String PAUSE = "pause";
    public static final String UNPAUSE = "unpause";

    @POST
    @Path("/" + PAUSE)
    @Produces(MediaType.TEXT_HTML)
    public Response pause(@Context HttpServletRequest request) {
        return doAction(true);
    }

    protected String pause() throws NamespaceException {
        EmissaryServer.pause();
        return "server paused";
    }

    @POST
    @Path("/" + UNPAUSE)
    @Produces(MediaType.TEXT_HTML)
    public Response unpause(@Context HttpServletRequest request) {
        return doAction(false);
    }

    protected String unpause() throws NamespaceException {
        EmissaryServer.unpause();
        return "server unpaused";
    }

    private Response doAction(boolean pause) {
        try {
            return Response.ok(pause ? pause() : unpause()).build();
        } catch (Exception e) {
            LOG.warn("Exception trying to initiate {}", (pause ? PAUSE : UNPAUSE), e);
            return Response.serverError().entity("error trying to " + (pause ? PAUSE : UNPAUSE)).build();
        }
    }
}