social-networking-library-ws/src/main/java/org/gcube/portal/social/networking/ws/methods/v1/Users.java

164 lines
5.4 KiB
Java

package org.gcube.portal.social.networking.ws.methods.v1;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.gcube.common.authorization.library.provider.AuthorizationProvider;
import org.gcube.common.authorization.library.utils.Caller;
import org.gcube.portal.social.networking.liferay.ws.UserManagerWSBuilder;
import org.gcube.portal.social.networking.ws.utils.ErrorMessages;
import org.gcube.portal.social.networking.ws.utils.TokensUtils;
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
import org.slf4j.LoggerFactory;
/**
* REST interface for the social networking library (users).
* @author Costantino Perciante at ISTI-CNR
*/
@Path("/users")
@Deprecated
public class Users {
// Logger
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(Users.class);
private static final String NOT_USER_TOKEN_CONTEXT_USED = "User's information can only be retrieved through a user token (not qualified)";
@GET
@Path("readCustomAttr/")
@Produces(MediaType.TEXT_PLAIN)
/**
* A wrapper for the user management library 's readCustomAttr method
* @return Response (OK, BAD REQUEST, ...)
*/
public Response readCustomAttr(
@QueryParam("attribute") String attributeKey
) {
if(attributeKey == null || attributeKey.isEmpty()){
logger.error("Missing/wrong request parameters");
return Response.status(Status.BAD_REQUEST).entity(ErrorMessages.MISSING_PARAMETERS).build();
}
Caller caller = AuthorizationProvider.instance.get();
String username = caller.getClient().getId();
String toReturn;
if(!TokensUtils.isUserTokenDefault(caller)){
logger.warn(NOT_USER_TOKEN_CONTEXT_USED);
return Response.status(Status.FORBIDDEN).entity("User's information can only be retrieved through a user token").build();
}else{
try{
GCubeUser user = UserManagerWSBuilder.getInstance().getUserManager().getUserByUsername(username);
toReturn = (String)UserManagerWSBuilder.getInstance().getUserManager().readCustomAttr(user.getUserId(), attributeKey);
}catch(Exception e){
logger.error("Unable to retrieve attribute for user.", e);
return Response.status(Status.NOT_FOUND).build();
}
}
logger.info("Attribute " + attributeKey + " retrieved for user " + username);
return Response.status(Status.OK).entity(toReturn).build();
}
// @PUT
// @Path("updateCustomAttr")
// @Produces(MediaType.TEXT_PLAIN)
// /**
// * A wrapper for the user management library 's saveCustomAttr method
// * @return
// */
// public Response updateCustomAttr(
// @FormParam("attribute") String attributeKey,
// @FormParam("value") String newValue
// ){
//
// if(attributeKey == null || attributeKey.isEmpty() || newValue == null){
//
// logger.error("Missing/wrong request parameters");
// return Response.status(Status.BAD_REQUEST).entity(ErrorMessages.missingParameters).build();
//
// }
//
// Caller caller = AuthorizationProvider.instance.get();
// String username = caller.getClient().getId();
//
// try{
//
// GCubeUser user = userManager.getUserByUsername(username);
// userManager.saveCustomAttr(user.getUserId(), attributeKey, newValue);
//
// }catch(Exception e){
//
// logger.error("Unable to set attribute for user.", e);
// return Response.status(Status.NOT_MODIFIED).build();
//
// }
//
// return Response.status(Status.OK).build();
//
// }
@GET
@Path("getUserFullname")
@Produces(MediaType.TEXT_PLAIN)
/**
* Retrieve user's fullname
* @return
*/
public Response getUserUsername(){
Caller caller = AuthorizationProvider.instance.get();
String username = caller.getClient().getId();
String toReturn = null;
if(!TokensUtils.isUserTokenDefault(caller)){
logger.warn(NOT_USER_TOKEN_CONTEXT_USED);
return Response.status(Status.FORBIDDEN).entity("User's information can only be retrieved through a user token").build();
}else{
try{
GCubeUser user = UserManagerWSBuilder.getInstance().getUserManager().getUserByUsername(username);
toReturn = user.getFullname();
logger.info("Found fullname " + toReturn + " for user " + username);
}catch(Exception e){
logger.error("Unable to retrieve attribute for user.", e);
return Response.status(Status.INTERNAL_SERVER_ERROR).entity(e.toString()).build();
}
}
return Response.status(Status.OK).entity(toReturn).build();
}
@GET
@Path("getUserEmail")
@Produces(MediaType.TEXT_PLAIN)
/**
* Retrieve user's email
* @return
*/
public Response getUserEmail(){
Caller caller = AuthorizationProvider.instance.get();
String username = caller.getClient().getId();
String toReturn = null;
if(!TokensUtils.isUserTokenDefault(caller)){
logger.warn(NOT_USER_TOKEN_CONTEXT_USED);
return Response.status(Status.FORBIDDEN).entity("User's information can only be retrieved through a user token").build();
}else{
try{
GCubeUser user = UserManagerWSBuilder.getInstance().getUserManager().getUserByUsername(username);
toReturn = user.getEmail();
logger.info("Found email " + toReturn + " for user " + username);
}catch(Exception e){
logger.error("Unable to retrieve attribute for user.", e);
return Response.status(Status.INTERNAL_SERVER_ERROR).entity(e.toString()).build();
}
}
return Response.status(Status.OK).entity(toReturn).build();
}
}