package org.gcube.portal.social.networking.ws.methods.v2; import java.util.List; import javax.validation.Valid; import javax.validation.ValidationException; import javax.validation.constraints.NotNull; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import org.gcube.portal.databook.shared.*; import org.gcube.portal.social.networking.ws.utils.CassandraConnection; import org.gcube.portal.social.networking.ws.outputs.ResponseBean; import org.slf4j.LoggerFactory; import com.webcohesion.enunciate.metadata.rs.RequestHeader; import com.webcohesion.enunciate.metadata.rs.RequestHeaders; /** * REST interface for the social networking library (hash tags). */ @Path("2/invites") @RequestHeaders ({ @RequestHeader( name = "Authorization", description = "Bearer token, see https://dev.d4science.org/how-to-access-resources"), @RequestHeader( name = "Content-Type", description = "application/json") }) public class Invites { // Logger private static final org.slf4j.Logger logger = LoggerFactory.getLogger(Invites.class); @GET @Produces(MediaType.APPLICATION_JSON) @Path("is-existing-invite-lib") public Response isExistingInviteLib( @QueryParam("vreid") String vreid, @QueryParam("email") String email ) throws ValidationException{ ResponseBean responseBean = new ResponseBean(); Status status = Status.OK; String inv = null; try{ logger.info("Retrieving invite for vre " + vreid); inv = CassandraConnection.getInstance().getDatabookStore().isExistingInvite(vreid, email); responseBean.setResult(inv); responseBean.setMessage(""); responseBean.setSuccess(true); }catch(Exception e){ logger.error("Unable to retrieve such likes.", e); responseBean.setMessage(e.getMessage()); responseBean.setSuccess(false); status = Status.INTERNAL_SERVER_ERROR; } return Response.status(status).entity(responseBean).build(); } @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @Path("save-invite-lib") public Response saveInviteLib( @NotNull(message="invite to save is missing") @Valid Invite invite ) throws ValidationException{ ResponseBean responseBean = new ResponseBean(); Status status = Status.OK; InviteOperationResult inv = null; try{ inv = CassandraConnection.getInstance().getDatabookStore().saveInvite(invite); responseBean.setResult(inv); responseBean.setMessage(""); responseBean.setSuccess(true); }catch(Exception e){ logger.error("Unable to retrieve such likes.", e); responseBean.setMessage(e.getMessage()); responseBean.setSuccess(false); status = Status.INTERNAL_SERVER_ERROR; } return Response.status(status).entity(responseBean).build(); } @GET @Produces(MediaType.APPLICATION_JSON) @Path("read-invite-lib") public Response readInviteLib( @QueryParam("inviteid") String inviteid ) throws ValidationException{ ResponseBean responseBean = new ResponseBean(); Status status = Status.OK; Invite inv = null; try{ logger.info("Retrieving invite for id " + inviteid); inv = CassandraConnection.getInstance().getDatabookStore().readInvite(inviteid); responseBean.setResult(inv); responseBean.setMessage(""); responseBean.setSuccess(true); }catch(Exception e){ logger.error("Unable to retrieve such likes.", e); responseBean.setMessage(e.getMessage()); responseBean.setSuccess(false); status = Status.INTERNAL_SERVER_ERROR; } return Response.status(status).entity(responseBean).build(); } @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @Path("set-invite-status-lib") public Response setInviteStatusLib( @QueryParam("vreid") String vreid, @QueryParam("email") String email, @NotNull(message="invitestatus to save is missing") @Valid InviteStatus stat ) throws ValidationException{ ResponseBean responseBean = new ResponseBean(); Status status = Status.OK; Boolean inv = null; try{ inv = CassandraConnection.getInstance().getDatabookStore().setInviteStatus(vreid,email,stat); responseBean.setResult(inv); responseBean.setMessage(""); responseBean.setSuccess(true); }catch(Exception e){ logger.error("Unable to retrieve such likes.", e); responseBean.setMessage(e.getMessage()); responseBean.setSuccess(false); status = Status.INTERNAL_SERVER_ERROR; } return Response.status(status).entity(responseBean).build(); } @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @Path("get-invited-email-by-vre-lib") public Response getInvitedEmailsByVRELib( @QueryParam("vreid") String vreid, @NotNull(message="invitestatus to save is missing") @Valid InviteStatus... stat ) throws ValidationException{ ResponseBean responseBean = new ResponseBean(); Status status = Status.OK; List inv = null; try{ inv = CassandraConnection.getInstance().getDatabookStore().getInvitedEmailsByVRE(vreid, stat); responseBean.setResult(inv); responseBean.setMessage(""); responseBean.setSuccess(true); }catch(Exception e){ logger.error("Unable to retrieve such likes.", e); responseBean.setMessage(e.getMessage()); responseBean.setSuccess(false); status = Status.INTERNAL_SERVER_ERROR; } return Response.status(status).entity(responseBean).build(); } }