package org.jivesoftware.openfire.plugin.rest.service;
import javax.annotation.PostConstruct;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
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 org.jivesoftware.openfire.plugin.rest.controller.UserServiceController;
import org.jivesoftware.openfire.plugin.rest.entity.UserGroupsEntity;
import org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException;
@Path("restapi/v1/users/{username}/groups")
public class UserGroupService {
private UserServiceController plugin;
@PostConstruct
public void init() {
plugin = UserServiceController.getInstance();
}
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public UserGroupsEntity getUserGroups(@PathParam("username") String username) throws ServiceException {
return new UserGroupsEntity(plugin.getUserGroups(username));
}
@POST
public Response addUserToGroups(@PathParam("username") String username, UserGroupsEntity userGroupsEntity)
throws ServiceException {
plugin.addUserToGroups(username, userGroupsEntity);
return Response.status(Response.Status.CREATED).build();
}
@POST
@Path("/{groupName}")
public Response addUserToGroup(@PathParam("username") String username, @PathParam("groupName") String groupName)
throws ServiceException {
plugin.addUserToGroup(username, groupName);
return Response.status(Response.Status.CREATED).build();
}
@DELETE
@Path("/{groupName}")
public Response deleteUserFromGroup(@PathParam("username") String username, @PathParam("groupName") String groupName)
throws ServiceException {
plugin.deleteUserFromGroup(username, groupName);
return Response.status(Response.Status.OK).build();
}
@DELETE
public Response deleteUserFromGroups(@PathParam("username") String username, UserGroupsEntity userGroupsEntity)
throws ServiceException {
plugin.deleteUserFromGroups(username, userGroupsEntity);
return Response.status(Response.Status.OK).build();
}
}