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.

83 lines
2.3 KiB

  1. package de.fd.fh.server.game.web;
  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import de.fd.fh.server.game.Game;
  5. import de.fd.fh.server.game.GameId;
  6. import de.fd.fh.server.game.GameService;
  7. import de.fd.fh.server.user.UserId;
  8. import de.fd.fh.shared.network.messages.CreateGameRequest;
  9. import lombok.RequiredArgsConstructor;
  10. import spark.Request;
  11. import spark.Response;
  12. import java.io.IOException;
  13. import java.util.List;
  14. @RequiredArgsConstructor
  15. public class GameController
  16. {
  17. private final ObjectMapper objectMapper = new ObjectMapper();
  18. private final GameService service;
  19. public Response createGame(final Request request, final Response response) throws IOException
  20. {
  21. final CreateGameRequest createRequest = objectMapper.readValue(request.body(), CreateGameRequest.class);
  22. final UserId whiteUser = UserId.of(createRequest.getWhiteUserId());
  23. final UserId blackUser = UserId.of(createRequest.getBlackUserId());
  24. final GameId gameId = service.createGame(blackUser, whiteUser);
  25. if (gameId == null)
  26. {
  27. response.status(400);
  28. }
  29. else
  30. {
  31. response.body(objectMapper.writeValueAsString(gameId));
  32. response.status(201);
  33. }
  34. return response;
  35. }
  36. public Response findGameById(final Request request, final Response response) throws JsonProcessingException
  37. {
  38. final GameId gameId = GameId.of(request.params(":game_id"));
  39. final Game game = service.findGameById(gameId);
  40. if (game == null)
  41. {
  42. response.status(404);
  43. }
  44. else
  45. {
  46. response.body(objectMapper.writeValueAsString(game));
  47. response.status(200);
  48. }
  49. return response;
  50. }
  51. public Response findRunningGamesOfUser(final Request request, final Response response) throws JsonProcessingException
  52. {
  53. final UserId userId = UserId.of(request.params(":user_id"));
  54. final List<Game> games = service.findRunningGamesOfUser(userId);
  55. if (games == null)
  56. {
  57. response.status(404);
  58. }
  59. else
  60. {
  61. response.body(objectMapper.writeValueAsString(games));
  62. response.status(200);
  63. }
  64. return response;
  65. }
  66. }