package org.atomnuke.pubsub.api.pubsub;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import org.apache.commons.lang3.StringUtils;
import org.atomnuke.pubsub.api.ApiResource;
import org.atomnuke.pubsub.api.type.SubscriptionDocument;
import org.atomnuke.pubsub.service.config.SubscriptionException;
/**
*
* @author zinic
*/
@Path("/subscriptions")
public class SubscriptionsResource extends ApiResource {
@PUT
@Consumes({"application/json", "text/json"})
public Response createNewSubscription(SubscriptionDocument doc) {
if (StringUtils.isEmpty(doc.getId()) || StringUtils.isEmpty(doc.getCallback()) || doc.getCategories().isEmpty()) {
return Response.status(Response.Status.BAD_REQUEST).entity("Please validate your JSON input.").build();
}
try {
subscriptionManager().put(doc);
} catch (SubscriptionException se) {
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(se.getMessage()).build();
}
return Response.status(Response.Status.ACCEPTED).build();
}
@GET
@Produces({"application/json", "text/json"})
public Response getActiveSubscriptions(@PathParam("subscriptionId") String subscriptionId) {
return Response.ok(subscriptionManager().getAll()).build();
}
@GET
@Path("/{subscriptionId}")
@Produces({"application/json", "text/json"})
public Response getActiveSubscription(@PathParam("subscriptionId") String subscriptionId) {
final SubscriptionDocument doc = subscriptionManager().get(subscriptionId);
if (doc == null) {
return Response.status(Response.Status.NOT_FOUND).build();
}
return Response.ok(doc).build();
}
}