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.

58 lines
1.6 KiB

  1. package de.fd.fh.server.game.web;
  2. import com.fasterxml.jackson.databind.ObjectMapper;
  3. import de.fd.fh.server.game.Game;
  4. import de.fd.fh.server.game.GameId;
  5. import de.fd.fh.server.game.GameService;
  6. import de.fd.fh.server.user.UserId;
  7. import de.fd.fh.shared.network.messages.CreateGameRequest;
  8. import lombok.RequiredArgsConstructor;
  9. import spark.Request;
  10. import spark.Response;
  11. import java.io.IOException;
  12. @RequiredArgsConstructor
  13. public class GameController
  14. {
  15. private final ObjectMapper objectMapper = new ObjectMapper();
  16. private final GameService service;
  17. public void createGame(final Request request, final Response response) throws IOException
  18. {
  19. final CreateGameRequest createRequest = objectMapper.readValue(request.body(), CreateGameRequest.class);
  20. final UserId whiteUser = UserId.of(createRequest.getWhiteUserId());
  21. final UserId blackUser = UserId.of(createRequest.getBlackUserId());
  22. final GameId gameId = service.createGame(blackUser, whiteUser);
  23. if (gameId == null)
  24. {
  25. response.status(400);
  26. }
  27. else
  28. {
  29. response.body(objectMapper.writeValueAsString(gameId));
  30. response.status(201);
  31. }
  32. }
  33. public void finGameById(final Request request, final Response response) throws IOException
  34. {
  35. final GameId gameId = GameId.of(request.params(":gameId"));
  36. final Game game = service.findGameById(gameId);
  37. if (game == null)
  38. {
  39. response.status(400);
  40. }
  41. else
  42. {
  43. response.body(objectMapper.writeValueAsString(game));
  44. response.status(200);
  45. }
  46. }
  47. }