You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
2.7 KiB

  1. package de.fd.fh.server.user.web;
  2. import com.fasterxml.jackson.databind.ObjectMapper;
  3. import de.fd.fh.server.access.AccessToken;
  4. import de.fd.fh.server.user.User;
  5. import de.fd.fh.server.user.UserId;
  6. import de.fd.fh.server.user.UserService;
  7. import static spark.Spark.get;
  8. import static spark.Spark.post;
  9. public class UserController
  10. {
  11. private ObjectMapper objectMapper = new ObjectMapper();
  12. public UserController(final UserService service)
  13. {
  14. post("/users",
  15. ((request, response) ->
  16. {
  17. final UserId userId =
  18. ((AccessToken) request.session()
  19. .attribute("userId"))
  20. .getUserId();
  21. final ChangeUserRequest message = objectMapper.readValue(request.body(),
  22. ChangeUserRequest.class);
  23. final User user = service.changePlayer(
  24. userId,
  25. message);
  26. if (user == null)
  27. {
  28. response.status(400);
  29. }
  30. else
  31. {
  32. response.status(200);
  33. response.type("application/json");
  34. return objectMapper.writeValueAsString(user);
  35. }
  36. return response;
  37. }
  38. ));
  39. get("/users",
  40. (request, response) ->
  41. {
  42. final UserId userId =
  43. ((AccessToken) request.session()
  44. .attribute("userId"))
  45. .getUserId();
  46. final User user = service.getPlayer(userId);
  47. if (user == null)
  48. {
  49. response.status(400);
  50. }
  51. else
  52. {
  53. response.status(200);
  54. response.type("application/json");
  55. return objectMapper.writeValueAsString(user);
  56. }
  57. return response;
  58. }
  59. );
  60. get("/users/:user_id",
  61. (request, response) ->
  62. {
  63. final UserId userId = UserId.of(request.params(":user_id"));
  64. final UserRequest user = service.getSmallPlayer(userId);
  65. if (user == null)
  66. {
  67. response.status(404);
  68. }
  69. response.body(objectMapper.writeValueAsString(user));
  70. return response;
  71. });
  72. }
  73. }