package br.com.http.timer;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import br.com.http.timer.exception.JobAlreadyExistsException;
import com.google.gson.JsonObject;
@Path("/job")
@SessionScoped
public class JobService implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private JobManager jobManager;
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Response createJob(@FormParam("id") Long id, @FormParam("method") String method,
@FormParam("url") String url, @FormParam("cookie-content") String cookieContent,
@FormParam("cookie-name") String cookieName, @FormParam("username") String basicAuthUsername,
@FormParam("password") String basicAuthPassword, @FormParam("cron") String cron) {
Job job = new Job(id);
job.setMethod(method);
job.setUrl(url);
job.setCookieContent(cookieContent);
job.setCookieName(cookieName);
job.setBasicAuthUsername(basicAuthUsername);
job.setBasicAuthPassword(basicAuthPassword);
job.configureCronExpression(cron);
try {
job = jobManager.createJob(job);
} catch (JobAlreadyExistsException e) {
return Response.status(Status.BAD_REQUEST).build();
}
JsonObject json = new JsonObject();
json.addProperty("id", job.getId());
return Response.ok(json.toString()).build();
}
@Path("/{id}")
@DELETE
@Produces(MediaType.APPLICATION_JSON)
public Response deleteJob(@PathParam("id") Long id) {
jobManager.removeJob(id);
return Response.ok().build();
}
}