package de.fd.fh.server.user.web; import com.fasterxml.jackson.databind.ObjectMapper; import de.fd.fh.server.access.AccessToken; import de.fd.fh.server.user.User; import de.fd.fh.server.user.UserId; import de.fd.fh.server.user.UserService; import static spark.Spark.get; import static spark.Spark.post; public class UserController { private ObjectMapper objectMapper = new ObjectMapper(); public UserController(final UserService service) { post("/users", ((request, response) -> { final UserId userId = ((AccessToken) request.session() .attribute("userId")) .getUserId(); final ChangeUserRequest message = objectMapper.readValue(request.body(), ChangeUserRequest.class); final User user = service.changePlayer( userId, message); if (user == null) { response.status(400); } else { response.status(200); response.type("application/json"); return objectMapper.writeValueAsString(user); } return response; } )); get("/users", (request, response) -> { final UserId userId = ((AccessToken) request.session() .attribute("userId")) .getUserId(); final User user = service.getPlayer(userId); if (user == null) { response.status(400); } else { response.status(200); response.type("application/json"); return objectMapper.writeValueAsString(user); } return response; } ); get("/users/:user_id", (request, response) -> { final UserId userId = UserId.of(request.params(":user_id")); final UserRequest user = service.getSmallPlayer(userId); if (user == null) { response.status(404); } response.body(objectMapper.writeValueAsString(user)); return response; }); } }