social-networking-library-ws/src/main/java/org/gcube/portal/social/networking/ws/methods/v2/Invites.java

178 lines
6.2 KiB
Java

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<Invite> 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();
}
}