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.

92 lines
2.5 KiB

package de.fd.fh.server.user.web;
import com.fasterxml.jackson.core.JsonProcessingException;
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 de.fd.fh.shared.network.messages.ChangeUserRequest;
import de.fd.fh.shared.network.messages.UserRequest;
import lombok.RequiredArgsConstructor;
import spark.Request;
import spark.Response;
@RequiredArgsConstructor
public class UserController
{
private ObjectMapper objectMapper = new ObjectMapper();
private final UserService service;
public Response getUser(Request request, Response response) throws JsonProcessingException
{
final UserId userId = UserId.of(request.params(":user_id"));
final UserRequest user = service.getSmallPlayer(userId);
if (user == null)
{
response.status(404);
return response;
}
response.body(objectMapper.writeValueAsString(user));
return response;
}
public Response getCompleteUser(Request request, Response response) throws JsonProcessingException
{
final UserId userId =
((AccessToken) request.session()
.attribute("userId"))
.getUserId();
final User user = service.getPlayer(userId);
if (user == null)
{
response.status(404);
}
else
{
response.status(200);
response.type("application/json");
response.body(objectMapper.writeValueAsString(user));
return response;
}
return response;
}
public Response updateUser(Request request, Response response) throws java.io.IOException
{
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");
response.body(objectMapper.writeValueAsString(user));
return response;
}
return response;
}
}