package cactusServer.resources; import java.util.HashMap; import javax.ws.rs.FormParam; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; import cactusServer.entities.CameraState; import cactusServer.entities.EmoteState; import cactusServer.entities.Player; import cactusServer.models.Instances; import net.arnx.jsonic.JSON; @Path("/instances/players") public class PlayersRest { @POST //@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.TEXT_PLAIN) public String createPlayer(@PathParam("instanceId") String instanceURI, @FormParam("characterURI") String characterURI, @FormParam("cameraState") CameraState cameraState, @FormParam("animationClassToStart") EmoteState.EmoteType animationClassToStart) { Instances instances = Instances.getInstance(); HashMap<String, Player> idMap = instances.createPlayer(instanceURI, characterURI, cameraState, animationClassToStart); HashMap<String, Player> uriMap = new HashMap<>(); for (String id : idMap.keySet()) { String uri = (InstancesRest.INSTANCES_URI + "/" + "/players/") + id; uriMap.put(uri, idMap.get(id)); } return JSON.encode(uriMap); } @Path("/{playerId}") @GET //@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.TEXT_PLAIN) public String getPlayer(@PathParam("playerId") String playerId) { return JSON.encode(Instances.getInstance().getPlayer(playerId)); } @GET //@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.TEXT_PLAIN) public String getPlayers(@QueryParam("instanceId") String instanceId) { return JSON.encode(Instances.getInstance().getPlayers(instanceId)); } @Path("/{playerId}") @PUT //@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.TEXT_PLAIN) public String updatePlayer(@PathParam("instanceId") String instanceId, @FormParam("playerId") String playerId, @FormParam("characterURI") String characterURI, @FormParam("position") Position3D position, @FormParam("angle") Quaternion3D angle, @FormParam("cameraState") CameraState cameraState, @FormParam("animationClassToStart") EmoteState.EmoteType animationClassToStart) { return JSON.encode(Instances.getInstance().updatePlayer(playerId, characterURI, position, angle, cameraState, animationClassToStart)); } }