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
58 lines
1.6 KiB
package de.fd.fh.server.game.web;
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import de.fd.fh.server.game.Game;
|
|
import de.fd.fh.server.game.GameId;
|
|
import de.fd.fh.server.game.GameService;
|
|
import de.fd.fh.server.user.UserId;
|
|
import de.fd.fh.shared.network.messages.CreateGameRequest;
|
|
import lombok.RequiredArgsConstructor;
|
|
import spark.Request;
|
|
import spark.Response;
|
|
|
|
import java.io.IOException;
|
|
|
|
@RequiredArgsConstructor
|
|
public class GameController
|
|
{
|
|
private final ObjectMapper objectMapper = new ObjectMapper();
|
|
|
|
private final GameService service;
|
|
|
|
public void createGame(final Request request, final Response response) throws IOException
|
|
{
|
|
final CreateGameRequest createRequest = objectMapper.readValue(request.body(), CreateGameRequest.class);
|
|
|
|
final UserId whiteUser = UserId.of(createRequest.getWhiteUserId());
|
|
final UserId blackUser = UserId.of(createRequest.getBlackUserId());
|
|
|
|
final GameId gameId = service.createGame(blackUser, whiteUser);
|
|
|
|
if (gameId == null)
|
|
{
|
|
response.status(400);
|
|
}
|
|
else
|
|
{
|
|
response.body(objectMapper.writeValueAsString(gameId));
|
|
response.status(201);
|
|
}
|
|
}
|
|
|
|
public void finGameById(final Request request, final Response response) throws IOException
|
|
{
|
|
final GameId gameId = GameId.of(request.params(":gameId"));
|
|
|
|
final Game game = service.findGameById(gameId);
|
|
|
|
if (game == null)
|
|
{
|
|
response.status(400);
|
|
}
|
|
else
|
|
{
|
|
response.body(objectMapper.writeValueAsString(game));
|
|
response.status(200);
|
|
}
|
|
}
|
|
}
|